Lindorm-cli是Lindorm提供的简易命令行工具,用于连接和管理Lindorm数据库。您可以通过Lindorm-cli完成基本的SQL操作,例如建表、数据查询、数据写入等。本文介绍通过Lindorm-cli连接并使用云原生多模数据库 Lindorm时序引擎的方法。
前提条件
已将客户端IP地址添加至Lindorm白名单,具体操作请参见设置白名单。
步骤一:安装Lindorm-cli
根据您的操作系统,下载对应的Lindorm-cli安装包。下载链接如下表所示。
说明下表中SHA256校验和可用于验证下载的Lindorm-cli安装包的完整性和真实性。
操作系统
下载链接
SHA256校验和
Linux
命令直接下载:
wget https://tsdbtools.oss-cn-hangzhou.aliyuncs.com/lindorm-cli-linux-latest.tar.gz
21945c466e2de2c256edd16afdfbb2234301573feb649a673939471a3d882b1a
Linux-arm64
命令直接下载:
wget https://tsdbtools.oss-cn-hangzhou.aliyuncs.com/lindorm-cli-linux-arm64-latest.tar.gz
bcae4d8479201d69e4883105d1a7f933fa46d78e19c171e8e1ebfbee28f6d953
Mac(Intel芯片)
e82cb1678ea5b263813ccb87fff0149526c36a2654082785efe5a6aaeb4eb24b
Mac(Arm芯片)
538d5fef122b416ca2ab63fd7074b77ef25840e9feb8d3490405aae36a537a68
Windows
e61078108a72b85382363e9619b8820aa5245bad60dec79ffd4bf9fea976e280
解压安装包。
以Linux操作系统为例,执行以下命令解压。
tar zxvf lindorm-cli-linux-latest.tar.gz
解压后
lindorm-cli-linux-latest
文件夹中为lindorm-cli
文件。
步骤二:连接Lindorm时序引擎
客户端部署在Linux或Mac系统
跳转至
lindorm-cli
文件所在目录。cd <lindorm-cli所在目录>
执行以下语句连接时序引擎。
./lindorm-cli -url <Lindorm时序SQL地址> -username <用户名> -password <密码> -database <目标数据库名>
连接示例
./lindorm-cli -url jdbc:lindorm:tsdb:url=http://ld-4xo90g5i370cu****-proxy-tsdb.lindorm.rds.aliyuncs.com:8242 -username user -password test -database default
参数说明
参数
是否必填
说明
Lindorm时序SQL地址
是
Lindorm时序引擎的时序SQL地址。例如:
jdbc:lindorm:tsdb:url=http://ld-bp12pc23yfb3*****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242
。说明通过Lindorm-cli连接方式也支持时序HTTP地址。
用户名
否
连接Lindorm时序引擎的用户名。
如果时序引擎未启用用户认证与权限校验,用户名和密码无需设置,更多信息请参见用户及权限管理。
密码
否
连接Lindorm时序引擎的密码,如果您忘记密码,可以通过Lindorm宽表引擎的集群管理系统修改用户密码。
目标数据库名
否
使用Lindorm-cli连接的数据库。默认数据库为default。连接过程中可以使用
use <目标数据库名>
语句切换至目标数据库。连接成功将返回以下结果:
lindorm-cli version: 1.0.xx
其中,
1.0.xx
为Lindorm-cli的版本号。
客户端部署在Windows系统
方法一
打开命令提示符(CMD),跳转至
lindorm-cli.exe
的所在目录下。cd <lindorm-cli.exe所在目录>
在CMD上执行以下语句连接时序引擎。
lindorm-cli -url <Lindorm时序SQL地址> -username <用户名> -password <密码> -database <目标数据库名>
连接成功的返回结果如下:
Connected to jdbc:lindorm:tsdb:url=http://****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242 lindorm-cli version: 1.0.xx
其中,
1.0.xx
为Lindorm-cli的版本号。
方法二
双击打开Lindorm-cli.exe程序,执行以下语句:
connect <Lindorm时序SQL地址> <用户名> <密码> -database <目标数据库名>
连接成功无结果返回。
步骤三:使用Lindorm时序引擎
建表
创建时序数据表。
CREATE TABLE sensor ( device_id VARCHAR NOT NULL, region VARCHAR NOT NULL, time TIMESTAMP NOT NULL, temperature DOUBLE, humidity BIGINT, PRIMARY KEY(device_id, region, time) );
说明创建时序数据表时建议指定主键(PRIMARY KEY),单机版不支持PRIMARY KEY。通常以数据源唯一标识作为PRIMARY KEY,例如物联网场景中设备ID、车联网场景中车辆唯一标识、监控场景中的应用ID或者
ip:port
等。时间戳列的列名必须为time,表示数据的时间,单位为毫秒(ms)。
查看表sensor是否创建成功。
SHOW TABLES;
查询结果如下:
+-------------------+ | Tables_In_default | +-------------------+ | sensor | +-------------------+
查看时序数据表的字段信息。
DESCRIBE TABLE sensor;
查询结果如下:
+-------------+-----------+------------+------------+--------------+ | columnName | typeName | columnKind | primaryKey | partitionTag | +-------------+-----------+------------+------------+--------------+ | device_id | VARCHAR | TAG | true | true | | region | VARCHAR | TAG | true | true | | time | TIMESTAMP | TIMESTAMP | true | false | | temperature | DOUBLE | FIELD | false | false | | humidity | BIGINT | FIELD | false | false | +-------------+-----------+------------+------------+--------------+
数据写入
如果TAGS相同,并且时间戳列相同,那么数据被认为是同一条数据,后写入的数据会覆盖先写入的数据。
单条依次写入。
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);
数据查询
条件查询
查询设备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 |
+----------+-----------------+
Lindorm-cli常用命令
help
:查看帮助命令。connect
:连接服务器命令。precision
:时间显示格式,支持rfc3339、h、m、s、ms、u或ns。exit
或者quit
:退出当前Lindorm时序引擎的连接。
常见问题
数据插入成功后,查询结果为空是什么原因?
写入数据后如果查询数据的结果为空,请使用DESCRIBE DATABASE <数据库名称>
语句查询数据库是否设置了数据保存有效期(TTL),如果数据超过保存有效期会被自动清理并且无法查询。
Lindorm-cli是否可以导入导出时序数据?
如果您的数据量较小,可以通过Lindorm-cli快速导出或导入csv文件,如有需求请联系Lindorm技术支持(钉钉号:s0s3eg3)。
如果数据量较大,建议您通过DataX导入数据。暂不支持导出大规模数据。