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時序引擎的連接。