通过Lindorm-cli连接并使用Lindorm时序引擎
本文介绍通过Lindorm-cli连接并使用云原生多模数据库Lindorm时序引擎的方法。
前提条件
准备工作
下载Lindorm-cli。您可以根据不同的操作系统下载Lindorm-cli,下载链接如下表所示。
操作系统 | 下载链接 |
Linux | |
macOS | |
Windows |
操作步骤
执行以下语句解压Lindorm-cli(以Linux操作系统为例)。
tar zxvf lindorm-cli-linux-latest.tar.gz
连接Lindorm时序引擎。
如果客户端部署在Linux或macOS操作系统上,请跳转至lindorm-cli.exe的所在目录下,执行如下语句。
./lindorm-cli -url <jdbc url> -username <用户名> -password <密码> -database <目标数据库名>
如果客户端部署在Windows系统上,请跳转至lindorm-cli.exe的所在目录下,在cmd上执行如下语句。
lindorm-cli -url <jdbc url> -username <用户名> -password <密码> -database <目标数据库名>
参数说明如下:
参数
是否必选
说明
jdbc url
是
Lindorm时序引擎的连接地址和端口,获取方法请参见查看连接地址。例如:
jdbc:lindorm:tsdb:url=http://ld-bp12pc23yfb3*****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242
。用户名
否
连接Lindorm时序引擎的用户名。如果时序引擎未启用用户认证与权限校验,用户名和密码无需设置,更多信息请参见用户认证与权限校验功能的启用。
密码
否
连接Lindorm时序引擎的密码,如果您忘记密码,可以通过Lindorm宽表引擎的集群管理系统修改用户密码,具体操作请参见修改用户密码。
目标数据库名
否
使用Lindorm-cli连接的数据库。默认数据库名为default。连接过程中可以使用
use <目标数据库名>
语句切换至目标数据库。
连接成功的返回结果如下:
Connected to jdbc:lindorm:tsdb:url=http://****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242 lindorm-cli version: 1.0.24
使用Lindorm时序引擎的语法示例。
执行以下语句创建时序数据表。
创建一个名为sensor的时序数据表。创建时序数据表时建议指定PRIMARY KEY,通常以数据源唯一标识作为PRIMARY KEY,例如物联网场景中设备ID、车联网场景中车辆唯一标识、监控场景中的应用ID或者
ip:port
等。时间戳列的列名必须为time,表示数据的时间,单位为毫秒(ms)。CREATE TABLE sensor ( device_id VARCHAR TAG, region VARCHAR TAG, time TIMESTAMP, temperature DOUBLE, humidity BIGINT, PRIMARY KEY(device_id));//单机版请删除此行
执行以下语句查看目标数据库中的时序数据表。
SHOW tables;
查询结果如下:
+-------------------+ | Tables_In_default | +-------------------+ | sensor | +-------------------+
执行以下语句查看时序数据表的字段信息。
DESCRIBE table sensor;
查询结果如下:
+-------------+-----------+------------+------------+ | columnName | typeName | columnKind | primaryKey | +-------------+-----------+------------+------------+ | device_id | VARCHAR | TAG | true | | region | VARCHAR | TAG | false | | time | TIMESTAMP | TIMESTAMP | false | | temperature | DOUBLE | FIELD | false | | humidity | BIGINT | FIELD | false | +-------------+-----------+------------+------------+
执行以下语句在时序数据表中写入数据。
说明如果PRIMARY KEY相同,并且时间戳列相同,那么数据被认为是同一条数据,后写入的数据会覆盖先写入的数据。
单条依次写入
INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1260','north-cn','2021-04-22 15:33:00',12.1,45); INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1260','north-cn','2021-04-22 15:33:10',13.2,47); INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1260','north-cn','2021-04-22 15:33:20',10.6,46); INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1261','south-cn','2021-04-22 15:33:00',18.1,44); INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES('F07A1261','south-cn','2021-04-22 15:33:10',19.7,44);
批量写入
INSERT INTO sensor (device_id, region, time, temperature, humidity) VALUES ('F07A1260','north-cn','2021-04-22 15:33:00',12.1,45), ('F07A1260','north-cn','2021-04-22 15:33:10',13.2,47), ('F07A1260','north-cn','2021-04-22 15:33:20',10.6,46), ('F07A1261','south-cn','2021-04-22 15:33:00',18.1,44), ('F07A1261','south-cn','2021-04-22 15:33:10',19.7,44);
执行以下语句在时序数据表中按条件查询数据。
重要写入数据后如果查询数据的结果为空,请使用
DESCRIBE DATABASE <数据库名称>
语句查询数据库是否设置了数据保存有效期(TTL),如果数据超过保存有效期会被自动清理并且无法查询。条件查询
查询设备
F07A1260
在时间范围2021-04-22 15:33:00
和2021-04-22 15:33:20
之间的数据:SELECT device_id,region,time,temperature,humidity FROM sensor WHERE device_id = 'F07A1260' AND time >= '2021-04-22 15:33:00' AND time <= '2021-04-22 15:33:20';
查询结果如下:
+-----------+----------+---------------------------+-------------+----------+ | device_id | region | time | temperature | humidity | +-----------+----------+---------------------------+-------------+----------+ | F07A1260 | north-cn | 2021-04-22T15:33:00+08:00 | 12.1 | 45 | | F07A1260 | north-cn | 2021-04-22T15:33:10+08:00 | 13.2 | 47 | | F07A1260 | north-cn | 2021-04-22T15:33:20+08:00 | 10.6 | 46 | +-----------+----------+---------------------------+-------------+----------+
降采样查询(指在时序数据应用场景中降低采样率的查询,可以减少结果集的数据点数。)
查询设备
F07A1260
在时间范围2021-04-22 15:33:00
和2021-04-22 15:33:20
之间的温度,按照20秒降采样后取最大值:SELECT device_id,region,time,max(temperature) AS max_temperature FROM sensor WHERE device_id = 'F07A1260' AND time >= '2021-04-22 15:33:00' AND time <= '2021-04-22 15:33:20' SAMPLE BY 20s;
查询结果如下:
+-----------+----------+---------------------------+-----------------+ | device_id | region | time | max_temperature | +-----------+----------+---------------------------+-----------------+ | F07A1260 | north-cn | 2021-04-22T15:33:00+08:00 | 13.2 | | F07A1260 | north-cn | 2021-04-22T15:33:20+08:00 | 10.6 | +-----------+----------+---------------------------+-----------------+
聚合查询
计算所有区域的最大温度:
SELECT region,max(temperature) AS max_temperature FROM sensor WHERE time >= '2021-04-22 15:33:00' AND time <= '2021-04-22 15:33:20' GROUP BY region;
查询结果如下:
+----------+-----------------+ | region | max_temperature | +----------+-----------------+ | north-cn | 13.2 | | south-cn | 19.7 | +----------+-----------------+
(可选)在时序数据表中导入或者导出CSV格式文件。
执行以下命令在时序数据表
sensor
中导入CSV格式文件。./lindorm-cli -url http://ld-bp1y919033x1k****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/ -format=csv -input /path/of/data.csv -table sensor
重要目前仅支持导入一个CSV文件。
确保导入的CSV文件的字段和时序数据表的字段一一对应,否则导入时会出错。
通过指定以下参数实现批量并发导入。
-batch:表示每次执行导入操作到服务端的数据条数,默认值为2000。
-concurrent:表示并发导入的线程数,默认值为10。
执行以下命令从时序数据表
sensor
中导出CSV文件。./lindorm-cli -url http://ld-bp1y919033x1k****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242/ -execute 'select * from sensor' -format=csv -output /path/of/data.csv
Lindorm-cli常用命令
help
:查看帮助命令。connect
:连接服务器命令。precision
:时间显示格式,支持rfc3339、h、m、s、 ms、u或ns。exit
或者quit
:退出当前Lindorm时序引擎的连接。