Lindorm-cli是Lindorm提供的简易命令行工具,用于连接和管理Lindorm数据库。您可以通过Lindorm-cli完成基本的SQL操作,例如建表、数据查询、数据写入等。本文介绍通过Lindorm-cli连接并使用云原生多模数据库 Lindorm时序引擎的方法。
前提条件
已将客户端IP地址添加至Lindorm白名单,具体操作请参见设置白名单。
步骤一:安装Lindorm-cli
根据您的操作系统,下载对应的Lindorm-cli安装包。下载链接如下表所示。
操作系统
下载链接
Linux
macOS
Windows
Linux-arm64
解压安装包。
以Linux操作系统为例,执行以下命令解压。
tar zxvf lindorm-cli-linux-latest.tar.gz
解压后
lindorm-cli-linux-latest
文件夹中为lindorm-cli.exe
文件。
步骤二:连接Lindorm时序引擎
客户端部署在Linux或Mac系统
跳转至
lindorm-cli.exe
文件所在目录。cd <lindorm-cli.exe所在目录>
执行以下语句连接时序引擎。
./lindorm-cli -url <Lindorm时序SQL地址> -username <用户名> -password <密码> -database <目标数据库名>
参数说明
参数
是否必填
说明
Lindorm时序SQL地址
是
Lindorm时序引擎的SQL连接地址和端口,获取方法请参见查看连接地址。例如:
jdbc:lindorm:tsdb:url=http://ld-bp12pc23yfb3*****-proxy-tsdb-pub.lindorm.rds.aliyuncs.com:8242
。说明通过Lindorm-cli连接方式也支持Lindorm 时序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);
数据查询
写入数据后如果查询数据的结果为空,请使用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 | +----------+-----------------+
Lindorm-cli常用命令
help
:查看帮助命令。connect
:连接服务器命令。precision
:时间显示格式,支持rfc3339、h、m、s、ms、u或ns。exit
或者quit
:退出当前Lindorm时序引擎的连接。