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