命令行工具
命令行工具
IOTDB 為用戶提供 cli/Shell 工具用于啟動客戶端和服務端程序。下面介紹每個 cli/Shell 工具的運行方式和相關參數。
$IOTDB_HOME 表示 IoTDB 的安裝目錄所在路徑。
1. Cli 運行方式
安裝后的 IoTDB 中有一個默認用戶:root,默認密碼為TimechoDB@2021(V2.0.6.x 版本之前為root)。用戶可以使用該用戶嘗試運行 IoTDB 客戶端以測試服務器是否正常啟動??蛻舳藛幽_本為$IOTDB_HOME/sbin 文件夾下的start-cli腳本。啟動腳本時需要指定運行 IP 和 RPC PORT。以下為服務器在本機啟動,且用戶未更改運行端口號的示例,默認端口為 6667。若用戶嘗試連接遠程服務器或更改了服務器運行的端口號,請在-h 和-p 項處使用服務器的 IP 和 RPC PORT。
用戶也可以在啟動腳本的最前方設置自己的環境變量,如 JAVA_HOME 等。
Linux 系統與 MacOS 系統啟動命令如下:
# V2.0.6.x 版本之前
Shell > bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root
# V2.0.6.x 版本及之后
Shell > bash sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw TimechoDB@2021Windows 系統啟動命令如下:
# V2.0.4.x 版本之前
Shell > sbin\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root
# V2.0.4.x 版本及之后, V2.0.6.x 版本之前
Shell > sbin\windows\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root
# V2.0.6.x 版本及之后
Shell > sbin\windows\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw TimechoDB@2021回車后即可成功啟動客戶端。啟動后出現如圖提示即為啟動成功。
_____ _________ ______ ______
|_ _| | _ _ ||_ _ `.|_ _ \
| | .--.|_/ | | \_| | | `. \ | |_) |
| | / .'`\ \ | | | | | | | __'.
_| |_| \__. | _| |_ _| |_.' /_| |__) |
|_____|'.__.' |_____| |______.'|_______/ version <version>
Successfully login at 127.0.0.1:6667輸入quit或exit可退出 cli 結束本次會話,cli 輸出quit normally表示退出成功。
2. Cli 運行參數
| 參數名 | 參數類型 | 是否為必需參數 | 說明 | 例子 |
|---|---|---|---|---|
| -disableISO8601 | 沒有參數 | 否 | 如果設置了這個參數,IoTDB 將以數字的形式打印時間戳 (timestamp)。 | -disableISO8601 |
-h <host> | string 類型,不需要引號 | 是 | IoTDB 客戶端連接 IoTDB 服務器的 IP 地址。 | -h 10.129.187.21 |
| -help | 沒有參數 | 否 | 打印 IoTDB 的幫助信息 | -help |
-p <rpcPort> | int 類型 | 是 | IoTDB 連接服務器的端口號,IoTDB 默認運行在 6667 端口。 | -p 6667 |
-pw <password> | string 類型,不需要引號 | 否 | IoTDB 連接服務器所使用的密碼。如果沒有輸入密碼 IoTDB 會在 Cli 端提示輸入密碼。 | -pw root |
-u <username> | string 類型,不需要引號 | 是 | IoTDB 連接服務器鎖使用的用戶名。 | -u root |
-maxPRC <maxPrintRowCount> | int 類型 | 否 | 設置 IoTDB 返回客戶端命令行中所顯示的最大行數。 | -maxPRC 10 |
-e <execute> | string 類型 | 否 | 在不進入客戶端輸入模式的情況下,批量操作 IoTDB | -e "show databases" |
| -c | 空 | 否 | 如果服務器設置了 rpc_thrift_compression_enable=true, 則 CLI 必須使用 -c | -c |
下面展示一條客戶端命令,功能是連接 IP 為 10.129.187.21 的主機,端口為 6667 ,用戶名為 root,密碼為 root,以數字的形式打印時間戳,IoTDB 命令行顯示的最大行數為 10。
Linux 系統與 MacOS 系統啟動命令如下:
Shell > bash sbin/start-cli.sh -h 10.129.187.21 -p 6667 -u root -pw root -disableISO8601 -maxPRC 10Windows 系統啟動命令如下:
# V2.0.4.x 版本之前
Shell > sbin\start-cli.bat -h 10.129.187.21 -p 6667 -u root -pw root -disableISO8601 -maxPRC 10
# V2.0.4.x 版本及之后
Shell > sbin\windows\start-cli.bat -h 10.129.187.21 -p 6667 -u root -pw root -disableISO8601 -maxPRC 103. CLI 特殊命令
下面列舉了一些CLI的特殊命令。
| 命令 | 描述 / 例子 |
|---|---|
set time_display_type=xxx | 例如: long, default, ISO8601, yyyy-MM-dd HH:mm:ss |
show time_display_type | 顯示時間顯示方式 |
set time_zone=xxx | 例如: +08:00, Asia/Shanghai |
show time_zone | 顯示CLI的時區 |
set fetch_size=xxx | 設置從服務器查詢數據時的讀取條數 |
show fetch_size | 顯示讀取條數的大小 |
set max_display_num=xxx | 設置 CLI 一次展示的最大數據條數, 設置為-1表示無限制 |
help | 獲取CLI特殊命令的提示 |
exit/quit | 退出CLI |
4. Cli 的批量操作
當您想要通過腳本的方式通過 Cli / Shell 對 IoTDB 進行批量操作時,可以使用-e 參數。通過使用該參數,您可以在不進入客戶端輸入模式的情況下操作 IoTDB。
為了避免 SQL 語句和其他參數混淆,現在只支持-e 參數作為最后的參數使用。
針對 cli/Shell 工具的-e 參數用法如下:
Linux 系統與 MacOS 指令:
Shell > bash sbin/start-cli.sh -h {host} -p {rpcPort} -u {user} -pw {password} -e {sql for iotdb}Windows 系統指令
# V2.0.4.x 版本之前
Shell > sbin\start-cli.bat -h {host} -p {rpcPort} -u {user} -pw {password} -e {sql for iotdb}
# V2.0.4.x 版本及之后
Shell > sbin\windows\start-cli.bat -h {host} -p {rpcPort} -u {user} -pw {password} -e {sql for iotdb}在 Windows 環境下,-e 參數的 SQL 語句需要使用``對于" "進行替換
為了更好的解釋-e 參數的使用,可以參考下面在 Linux 上執行的例子。
假設用戶希望對一個新啟動的 IoTDB 進行如下操作:
創建名為 root.demo 的 database
創建名為 root.demo.s1 的時間序列
向創建的時間序列中插入三個數據點
查詢驗證數據是否插入成功
那么通過使用 cli/Shell 工具的 -e 參數,可以采用如下的腳本:
# !/bin/bash
host=127.0.0.1
rpcPort=6667
user=root
pass=root
bash ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "CREATE DATABASE root.demo"
bash ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "create timeseries root.demo.s1 WITH DATATYPE=INT32, ENCODING=RLE"
bash ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "insert into root.demo(timestamp,s1) values(1,10)"
bash ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "insert into root.demo(timestamp,s1) values(2,11)"
bash ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "insert into root.demo(timestamp,s1) values(3,12)"
bash ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "select s1 from root.demo"打印出來的結果顯示如下,通過這種方式進行的操作與客戶端的輸入模式以及通過 JDBC 進行操作結果是一致的。
Shell > bash ./shell.sh
+-----------------------------+------------+
| Time|root.demo.s1|
+-----------------------------+------------+
|1970-01-01T08:00:00.001+08:00| 10|
|1970-01-01T08:00:00.002+08:00| 11|
|1970-01-01T08:00:00.003+08:00| 12|
+-----------------------------+------------+
Total line number = 3
It costs 0.267s需要特別注意的是,在腳本中使用 -e 參數時要對特殊字符進行轉義。