命令行接口(CLI)

    • Cli / Shell工具
      • Cli / Shell安装
      • Cli / Shell运行方式
      • Cli / Shell运行参数
      • Cli / Shell的-e参数

    Cli / Shell安装

    在iotdb的根目录下执行

    在生成完毕之后,IoTDB的cli工具位于文件夹”cli/target/iotdb-cli-{project.version}”中。

    安装后的IoTDB中有一个默认用户:,默认密码为root。用户可以使用该用户尝试运行IoTDB客户端以测试服务器是否正常启动。客户端启动脚本为$IOTDB_HOME/bin文件夹下的start-cli脚本。启动脚本时需要指定运行IP和RPC PORT。以下为服务器在本机启动,且用户未更改运行端口号的示例,默认端口为6667。若用户尝试连接远程服务器或更改了服务器运行的端口号,请在-h和-p项处使用服务器的IP和RPC PORT。
    用户也可以在启动脚本的最前方设置自己的环境变量,如JAVA_HOME等 (对于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

    回车后即可成功启动客户端。启动后出现如图提示即为启动成功。

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

    输入quitexit可退出cli结束本次会话,cli输出表示退出成功。

    Cli / Shell运行参数

    下面展示一条客户端命令,功能是连接IP为10.129.187.21的主机,端口为6667 ,用户名为root,密码为root,以数字的形式打印时间戳,IoTDB命令行显示的最大行数为10。

    Windows系统启动命令如下:

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

    若对应的IoTDB服务器开启了使用OpenID Connect (OIDC)作为权限认证服务,那么就不再需要使用用户名密码进行登录。 替而代之的是使用Token,以及空密码。 此时,登录命令如下:

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

    其中,需要将{my-access-token} (注意,包括{})替换成你的token。

    如何获取token取决于你的OIDC设置。 最简单的一种情况是使用password-grant。例如,假设你在用keycloack作为你的OIDC服务, 并且你在keycloack中有一个被定义成publich的iotdb客户的realm,那么你可以使用如下curl命令获得token。 (注意例子中的{}和里面的内容需要替换成具体的服务器地址和realm名字):

    1. curl -X POST "https://{your-keycloack-server}/auth/realms/{your-realm}/protocol/openid-connect/token" \ 1613 11:09:38
    2. -H "Content-Type: application/x-www-form-urlencoded" \
    3. -d "username={username}" \
    4. -d "password={password}" \

    示例结果如下:

    Cli / Shell的-e参数

    当您想要通过脚本的方式通过Cli / Shell对IoTDB进行批量操作时,可以使用-e参数。通过使用该参数,您可以在不进入客户端输入模式的情况下操作IoTDB。

    为了避免SQL语句和其他参数混淆,现在只支持-e参数作为最后的参数使用。

    针对cli/Shell工具的-e参数用法如下:

    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进行如下操作:

    1.创建名为root.demo的存储组

    2.创建名为root.demo.s1的时间序列

    3.向创建的时间序列中插入三个数据点

    4.查询验证数据是否插入成功

    那么通过使用cli/Shell工具的-e参数,可以采用如下的脚本:

    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)"

    打印出来的结果显示在下图,通过这种方式进行的操作与客户端的输入模式以及通过JDBC进行操作结果是一致的。

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