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.gz21945c466e2de2c256edd16afdfbb2234301573feb649a673939471a3d882b1a
Linux-arm64
命令直接下載:
wget https://tsdbtools.oss-cn-hangzhou.aliyuncs.com/lindorm-cli-linux-arm64-latest.tar.gzbcae4d8479201d69e4883105d1a7f933fa46d78e19c171e8e1ebfbee28f6d953
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支援人員(DingTalk號:s0s3eg3)。
如果資料量較大,建議您通過DataX匯入資料。暫不支援匯出大規模資料。