更新时间:2024-11-29 GMT+08:00
IoTDB数据导入
操作场景
该任务指导用户使用“import-csv.sh”将CSV格式的数据导入到IoTDB。
前提条件
- 已安装客户端,例如安装目录为“/opt/client”,以下操作的客户端目录只是举例,请根据实际安装目录修改。
- 各组件业务用户由MRS集群管理员根据业务需要创建。安全模式下,“机机”用户需要下载keytab文件,,“人机”用户第一次登录时需修改密码。
- 服务端默认开启了SSL,需参考使用IoTDB客户端章节生成“truststore.jks”证书,并拷贝到“客户端安装目录/IoTDB/iotdb/conf”目录下。
操作步骤
- 在本地准备CSV文件,文件名为:example-filename.csv,内容如下:
Time,root.fit.d1.s1,root.fit.d1.s2,root.fit.d2.s1,root.fit.d2.s3,root.fit.p.s1 1,100,hello,200,300,400 2,500,world,600,700,800 3,900,"hello, \"world\"",1000,1100,1200
在导入数据前,需要注意:
- 导入的数据不能包含空格,否则此次数据导入操作会失败,需要对导入数据类型进行自检。
- 包含,的字段需要使用单引号或者双引号括起来,例如:hello,world修改为"hello,world"。
- 字段中的"需要被替换成转义字符\",例如:"world"修改为\"world\"。
- 字段中的'需要被替换成转义字符\',例如:'world' 修改为\'world\'。
- 若输入的值为时间,格式为“yyyy-MM-dd'T'HH:mm:ss, yyy-MM-dd HH:mm:ss”或者“yyyy-MM-dd'T'HH:mm:ss.SSSZ”,例如:2022-02-28T11:07:00、2022-02-28 11:07:00或者2022-02-28T11:07:00.000Z。
- 使用WinSCP工具将CSV文件导入客户端节点,例如“/opt/client/IoTDB/iotdb/sbin”目录下。
- 以客户端安装用户,登录安装客户端的节点。
- 执行以下命令,切换到客户端安装目录。
- 执行以下命令配置环境变量。
- 首次登录IoTDB客户端前需执行以下步骤生成SSL客户端证书:
- 若当前集群开启了Kerberos认证,执行以下命令认证当前用户,若集群未开启Kerberos认证请跳过该步骤。
- 执行以下命令,切换到IoTDB客户端运行脚本所在目录。
- 集群未启用Kerberos认证(普通模式)需先调用“alter-cli-password.sh”脚本修改默认用户root的默认密码:
sh alter-cli-password.sh IoTDBServer实例节点IP RPC端口
- IoTDBServer RPC端口默认为22260,也可在参数“IOTDB_SERVER_RPC_PORT”中自行配置。
- root用户默认密码请联系系统管理员获取。
- 执行以下命令登录客户端
./start-cli.sh -h IoTDBServer实例节点的业务ip -p IoTDBServer RPC端口
- IoTDBServer实例节点的业务IP地址可登录FusionInsight Manager后选择“集群 > 服务 > IoTDB > 实例”查看。
- RPC端口默认为22260,可通过“集群 > 服务 > IoTDB > 配置 > 全部配置”,搜索参数“IOTDB_SERVER_RPC_PORT”获得。
- 集群未启用Kerberos认证(普通模式)使用默认用户root登录IoTDB客户端。
运行该命令后,根据实际需求指定业务用户名:
- 不指定业务用户名,则输入“no”;此时,则使用7中的用户执行后续操作:
- 输入其它,则退出登录:
- (可选)创建元数据。
IoTDB具有类型推断的能力,因此在数据导入前创建元数据不是必须的。但仍然推荐在使用CSV导入工具导入数据前创建元数据,因为这可以避免不必要的类型转换错误。命令如下:
SET STORAGE GROUP TO root.fit.d1; SET STORAGE GROUP TO root.fit.d2; SET STORAGE GROUP TO root.fit.p; CREATE TIMESERIES root.fit.d1.s1 WITH DATATYPE=INT32,ENCODING=RLE; CREATE TIMESERIES root.fit.d1.s2 WITH DATATYPE=TEXT,ENCODING=PLAIN; CREATE TIMESERIES root.fit.d2.s1 WITH DATATYPE=INT32,ENCODING=RLE; CREATE TIMESERIES root.fit.d2.s3 WITH DATATYPE=INT32,ENCODING=RLE; CREATE TIMESERIES root.fit.p.s1 WITH DATATYPE=INT32,ENCODING=RLE;
- 执行以下命令,退出客户端。
- 执行以下命令,切换到“import-csv.sh”运行脚本所在目录。
- 执行以下命令运行import-csv.sh,导入“example-filename.csv”文件。
./import-csv.sh -h IoTDBServer实例节点的业务ip -p IoTDBServer RPC端口 -f example-filename.csv
需根据提示交互式输入业务用户名和对应密码,如下显示表示CSV文件导入成功:
- 验证数据一致性。
- 执行以下命令,切换到IoTDB客户端运行脚本所在目录。
- 参考10登录IoTDB客户端。执行SQL查询数据并与1中数据进行对比。
- 查看导入的数据与1中的数据是否一致,若一致则表示导入成功。
例如,执行以下命令查看导入的数据:
SELECT * FROM root.fit.**;
- 为避免安全风险,推荐使用交互式方式导入CSV文件。
- CSV文件导入也可使用“./import-csv.sh -h IoTDBServer实例节点的业务ip -p IoTDBServer RPC端口 -u 业务用户名 -pw 业务用户密码 -f example-filename.csv”命令。
如下显示表示CSV文件导入成功:
- 若服务端IoTDB开启了纳秒(ns)时间精度,客户端导入纳秒时间戳数据时,需要加上-tp ns参数。集群是否开启纳秒时间精度可登录FusionInsight Manager,选择“集群 > 配置 > 所有非默认值”,搜索“timestamp_precision”查看。
父主题: IoTDB数据导入与导出