Apache IoTDB开发系统之命令行界面(CLI)

举报
小云悠悠zZ 发表于 2023/09/18 10:41:57 2023/09/18
【摘要】 下面是服务器在本地启动且用户未更改正在运行的端口的示例。默认 rpc 端口为 6667. 如果需要连接到远程服务器或更改正在运行的服务器的 rpc 端口号,请将特定的 IP 和 RPC PORT 设置为 -h 和 -p.

IoTDB 提供 Cli/shell 工具,供用户在命令行中与 IoTDB 服务器进行交互。本文档介绍了 Cli/shell 工具的工作原理及其参数的含义。

注意:在本文档中,$IOTDB_HOME 表示 IoTDB 安装目录的路径。

安装

在 iotdb 的根路径下:

  1. > mvn clean package -pl cli -am -DskipTests

构建完成后,IoTDB cli 将位于文件夹 “cli/target/iotdb-cli-{project.version}” 中。

运行

运行命令行界面

安装后,IoTDB:中有一个默认用户,默认密码为。用户可以使用此用户名试用IoTDB Cli/Shell工具。cli 启动脚本是 $IOTDB_HOME/bin 文件夹下的文件。启动脚本时,需要指定 IP 和端口。(确保 IoTDB 服务器在使用 Cli/Shell 工具连接时正常运行。rootrootstart-cli

下面是服务器在本地启动且用户未更改正在运行的端口的示例。默认 rpc 端口为 6667
如果需要连接到远程服务器或更改正在运行的服务器的 rpc 端口号,请将特定的 IP 和 RPC PORT 设置为 -h 和 -p.
您也可以在启动脚本的前面设置自己的环境变量(linux 为 “/sbin/start-cli.sh”,Windows 为 “/sbin/start-cli.bat”)

Linux 和 MacOS 系统启动命令如下:

  1. Shell > sbin/start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root

Windows 系统启动命令如下:

  1. Shell > sbin\start-cli.bat -h 127.0.0.1 -p 6667 -u root -pw root

使用这些命令后,CLI 可以成功启动。成功状态如下:

  1. _____ _________ ______ ______
  2. |_ _| | _ _ ||_ _ `.|_ _ \
  3. | | .--.|_/ | | \_| | | `. \ | |_) |
  4. | | / .'`\ \ | | | | | | | __'.
  5. _| |_| \__. | _| |_ _| |_.' /_| |__) |
  6. |_____|'.__.' |_____| |______.'|_______/ version <version>
  7. IoTDB> login successfully
  8. IoTDB>

进入或可以退出 Cli。命令行将显示quitexitquit normally

命令行界面参数

Parameter name Parameter type Required Description Example
-disableISO8601 No parameters No If this parameter is set, IoTDB will print the timestamp in digital form -disableISO8601
-h <host> string, no quotation marks Yes The IP address of the IoTDB server -h 10.129.187.21
-help No parameters No Print help information for IoTDB -help
-p <rpcPort> int Yes The rpc port number of the IoTDB server. IoTDB runs on rpc port 6667 by default -p 6667
-pw <password> string, no quotation marks No The password used for IoTDB to connect to the server. If no password is entered, IoTDB will ask for password in Cli command -pw root
-u <username> string, no quotation marks Yes User name used for IoTDB to connect the server -u root
-maxPRC <maxPrintRowCount> int No Set the maximum number of rows that IoTDB returns -maxPRC 10
-e <execute> string No manipulate IoTDB in batches without entering cli input mode -e “show storage group”
-c empty No If the server enables , then cli must use rpc_thrift_compression_enable=true-c -c

下面是一个cli命令,它将主机与IP 10.129.187.21,rpc端口6667,用户名“root”,密码“root”连接起来,并以数字形式打印时间戳。IoTDB 命令行上显示的最大行数为 10 行。

Linux 和 MacOS 系统启动命令如下:

  1. Shell > sbin/start-cli.sh -h 10.129.187.21 -p 6667 -u root -pw root -disableISO8601 -maxPRC 10

Windows 系统启动命令如下:

  1. Shell > sbin\start-cli.bat -h 10.129.187.21 -p 6667 -u root -pw root -disableISO8601 -maxPRC 10

有关在服务器端启用 OpenID 连接身份验证的 CLI 的使用说明

如果在服务器端启用了 OIDC,则不需要用户名/密码,但需要来自 OIDC 提供商的有效访问令牌。因此,作为用户名,您使用令牌并且密码必须为空,例如

  1. Shell > sbin/start-cli.sh -h 10.129.187.21 -p 6667 -u {my-access-token} -pw ""

如何获取令牌取决于您的 OpenID Connect 设置,此处未介绍。在最简单的情况下,您可以通过命令行使用 .例如,如果您使用 keycloack 作为 OIDC,并且您有一个将客户端定义为公共的领域,则可以使用以下命令获取令牌(将 all 替换为适当的值)。passwort-grantiotdbcurl{}

  1. curl -X POST "https://{your-keycloack-server}/auth/realms/{your-realm}/protocol/openid-connect/token" \
  2. -H "Content-Type: application/x-www-form-urlencoded" \
  3. -d "username={username}" \
  4. -d "password={password}" \
  5. -d 'grant_type=password' \
  6. -d "client_id=iotdb"

响应看起来像

{"access_token":"eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJxMS1XbTBvelE1TzBtUUg4LVNKYXAyWmNONE1tdWNXd25RV0tZeFpKNG93In0.eyJleHAiOjE1OTAzOTgwNzEsImlhdCI6MTU5MDM5Nzc3MSwianRpIjoiNjA0ZmYxMDctN2NiNy00NTRmLWIwYmQtY2M2ZDQwMjFiNGU4IiwiaXNzIjoiaHR0cDovL2F1dGguZGVtby5wcmFnbWF0aWNpbmR1c3RyaWVzLmRlL2F1dGgvcmVhbG1zL0lvVERCIiwiYXVkIjoiYWNjb3VudCIsInN1YiI6ImJhMzJlNDcxLWM3NzItNGIzMy04ZGE2LTZmZThhY2RhMDA3MyIsInR5cCI6IkJlYXJlciIsImF6cCI6ImlvdGRiIiwic2Vzc2lvbl9zdGF0ZSI6IjA2MGQyODYyLTE0ZWQtNDJmZS1iYWY3LThkMWY3ODQ2NTdmMSIsImFjciI6IjEiLCJhbGxvd2VkLW9yaWdpbnMiOlsibG9jYWxob3N0OjgwODAiXSwicmVhbG1fYWNjZXNzIjp7InJvbGVzIjpbIm9mZmxpbmVfYWNjZXNzIiwidW1hX2F1dGhvcml6YXRpb24iLCJpb3RkYl9hZG1pbiJdfSwicmVzb3VyY2VfYWNjZXNzIjp7ImFjY291bnQiOnsicm9sZXMiOlsibWFuYWdlLWFjY291bnQiLCJtYW5hZ2UtYWNjb3VudC1saW5rcyIsInZpZXctcHJvZmlsZSJdfX0sInNjb3BlIjoiZW1haWwgcHJvZmlsZSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJwcmVmZXJyZWRfdXNlcm5hbWUiOiJ1c2VyIn0.nwbrJkWdCNjzFrTDwKNuV5h9dDMg5ytRKGOXmFIajpfsbOutJytjWTCB2WpA8E1YI3KM6gU6Jx7cd7u0oPo5syHhfCz119n_wBiDnyTZkFOAPsx0M2z20kvBLN9k36_VfuCMFUeddJjO31MeLTmxB0UKg2VkxdczmzMH3pnalhxqpnWWk3GnrRrhAf2sZog0foH4Ae3Ks0lYtYzaWK_Yo7E4Px42-gJpohy3JevOC44aJ4auzJR1RBj9LUbgcRinkBy0JLi6XXiYznSC2V485CSBHW3sseXn7pSXQADhnmGQrLfFGO5ZljmPO18eFJaimdjvgSChsrlSEmTDDsoo5Q","expires_in":300,"refresh_expires_in":1800,"refresh_token":"eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJhMzZlMGU0NC02MWNmLTQ5NmMtOGRlZi03NTkwNjQ5MzQzMjEifQ.eyJleHAiOjE1OTAzOTk1NzEsImlhdCI6MTU5MDM5Nzc3MSwianRpIjoiNmMxNTBiY2EtYmE5NC00NTgxLWEwODEtYjI2YzhhMmI5YmZmIiwiaXNzIjoiaHR0cDovL2F1dGguZGVtby5wcmFnbWF0aWNpbmR1c3RyaWVzLmRlL2F1dGgvcmVhbG1zL0lvVERCIiwiYXVkIjoiaHR0cDovL2F1dGguZGVtby5wcmFnbWF0aWNpbmR1c3RyaWVzLmRlL2F1dGgvcmVhbG1zL0lvVERCIiwic3ViIjoiYmEzMmU0NzEtYzc3Mi00YjMzLThkYTYtNmZlOGFjZGEwMDczIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6ImlvdGRiIiwic2Vzc2lvbl9zdGF0ZSI6IjA2MGQyODYyLTE0ZWQtNDJmZS1iYWY3LThkMWY3ODQ2NTdmMSIsInNjb3BlIjoiZW1haWwgcHJvZmlsZSJ9.ayNpXdNX28qahodX1zowrMGiUCw2AodlHBQFqr8Ui7c","token_type":"bearer","not-before-policy":0,"session_state":"060d2862-14ed-42fe-baf7-8d1f784657f1","scope":"email profile"}

这里有趣的部分是 带有密钥的访问令牌 .这必须作为用户名(带参数)和空密码传递给 CLI。access_token-u

CLI 的批量操作

-e 参数是为 Cli/shell 工具设计的,适用于您希望通过脚本批量操作 IoTDB 的情况。通过使用 -e 参数,您可以在不进入 cli 输入模式的情况下操作 IoTDB。

为了避免语句和其他参数的混淆,目前的情况只支持 -e 参数作为最后一个参数。

-e 参数对 Cli/shell 的用法如下:

Linux 和 MacOS 系统命令:

  1. Shell > sbin/start-cli.sh -h {host} -p {rpcPort} -u {user} -pw {password} -e {sql for iotdb}

视窗系统命令:

  1. Shell > sbin\start-cli.bat -h {host} -p {rpcPort} -u {user} -pw {password} -e {sql for iotdb}

在 Windows 环境中,需要使用 -e 参数的 SQL 语句来替换`` " "

为了更好地解释 -e 参数的使用,以下面为例(在 linux 系统上)。

假设您要为新启动的 IoTDB 创建一个存储组 root.demo,创建一个时间序列 root.demo.s1 并在其中插入三个数据点。使用 -e 参数,您可以编写如下的 shell:

  1. # !/bin/bash
  2. host=127.0.0.1
  3. rpcPort=6667
  4. user=root
  5. pass=root
  6. ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "set storage group to root.demo"
  7. ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "create timeseries root.demo.s1 WITH DATATYPE=INT32, ENCODING=RLE"
  8. ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "insert into root.demo(timestamp,s1) values(1,10)"
  9. ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "insert into root.demo(timestamp,s1) values(2,11)"
  10. ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "insert into root.demo(timestamp,s1) values(3,12)"
  11. ./sbin/start-cli.sh -h ${host} -p ${rpcPort} -u ${user} -pw ${pass} -e "select s1 from root.demo"

打印结果如图所示,与 cli 和 jdbc 操作一致。

  1. Shell > ./shell.sh
  2. +-----------------------------+------------+
  3. | Time|root.demo.s1|
  4. +-----------------------------+------------+
  5. |1970-01-01T08:00:00.001+08:00| 10|
  6. |1970-01-01T08:00:00.002+08:00| 11|
  7. |1970-01-01T08:00:00.003+08:00| 12|
  8. +-----------------------------+------------+
  9. Total line number = 3
  10. It costs 0.267s

需要注意的是,在 shell 脚本中使用 -e 参数需要注意特殊字符的转义。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。