iotdb icon indicating copy to clipboard operation
iotdb copied to clipboard

[Bug] Meet error when insert csv because 507: Fail to insert measurements [in_time] caused by [data type of root.log.in.in_time is not consistent, registered type TIMESTAMP, inserting type FLOAT, timestamp 1737611978558, value 10.0]

Open SunnySaman opened this issue 11 months ago • 3 comments

Search before asking

  • [x] I searched in the issues and found nothing similar.

Version

dev-1.3 版本,2025-01-2217点拉取、编译生产的;

Describe the bug and provide the minimal reproduce step

  1. 首先我要导入一个表数据;
  • 表结构如下:
IoTDB> show nodes in schema template test
+----------+---------+----------+-----------+
|ChildNodes| DataType|  Encoding|Compression|
+----------+---------+----------+-----------+
|      name|   STRING|DICTIONARY|        LZ4|
|   in_time|TIMESTAMP|  TS_2DIFF|        LZ4|
| device_id|    INT64|  TS_2DIFF|        LZ4|
|  thresold|   STRING|DICTIONARY|        LZ4|
|     value|   STRING|DICTIONARY|        LZ4|
+----------+---------+----------+-----------+
  1. 然后需要从一个csv文件导入到表内
  • csv 文件内的数据如下:

Time,Device,name,in_time,device_id,thresold,value
2025-01-23T14:08:38.558+08:00,root.log.in,"device_name1234567890",1737612237512,10000001,"1","value_test_111"
2025-01-23T14:07:38.558+08:00,root.log.in,"device_name1234567891",1737612237512,10000002,"2","value_test_112"
2025-01-23T14:06:38.558+08:00,root.log.in,"device_name1234567892",1737612237512,10000003,"3","value_test_113"
2025-01-23T14:05:38.558+08:00,root.log.in,"device_name1234567893",1737612237512,10000004,"4","value_test_114"
2025-01-23T14:04:38.558+08:00,root.log.in,"device_name1234567894",1737612237512,10000005,"5","value_test_115"
2025-01-23T14:03:38.558+08:00,root.log.in,"device_name1234567895",1737612237512,10000006,"6","value_test_116"
2025-01-23T14:02:38.558+08:00,root.log.in,"device_name1234567896",1737612237512,10000007,"7","value_test_117"
2025-01-23T14:01:38.558+08:00,root.log.in,"device_name1234567897",1737612237512,10000008,"8","value_test_118"
2025-01-23T14:00:38.558+08:00,root.log.in,"device_name1234567898",1737612237512,10000009,"9","value_test_119"
2025-01-23T13:59:38.558+08:00,root.log.in,"device_name1234567899",1737612237512,10000010,"10","value_test_120"


  1. 再shell终端导入

root@IOT:/usr/local/iotdb/tools# ./import-data.sh -u root -pw '密码' -s /home/dump0_0.csv -aligned true -file_type csv -ty ms
Meet error when insert csv because 507: Fail to insert measurements [in_time] caused by [data type of root.log.in.in_time is not consistent, registered type TIMESTAMP, inserting type DOUBLE, timestamp 1737611978558, value 1.737612237512E12]


  • 哦,对了,-file_type参数,不是type参数,使用type参数不行
  1. 难道需要转换下格式?
# 加双引号报错:
Meet error when insert csv because 507: Fail to insert measurements [in_time] caused by [data type of root.log.in.in_time is not consistent, registered type TIMESTAMP, inserting type STRING, timestamp 1737611978558, value 1737612237512]

# 加单引号报错:
Meet error when insert csv because 507: Fail to insert measurements [in_time] caused by [data type of root.log.in.in_time is not consistent, registered type TIMESTAMP, inserting type STRING, timestamp 1737611978558, value '1737612237512']

# 使用date 报错:

Meet error when insert csv because 507: Fail to insert measurements [in_time] caused by [data type of root.log.in.in_time is not consistent, registered type TIMESTAMP, inserting type STRING, timestamp 1737611978558, value 2025-01-23T14:08:38.558]


What did you expect to see?

waiting

What did you see instead?

waiting

Anything else?

no

Are you willing to submit a PR?

  • [ ] I'm willing to submit a PR!

SunnySaman avatar Jan 23 '25 07:01 SunnySaman

另外,麻烦对-typeInfer 参数的解释再详细一下,看不懂

SunnySaman avatar Jan 23 '25 07:01 SunnySaman

用于指定类型推断规则,如<srcTsDataType1=dstTsDataType1,srcTsDataType2=dstTsDataType2,...>。 说明:用于指定类型推断规则. srcTsDataType 包括 boolean,int,long,float,double,NaN. dstTsDataType 包括 boolean,int,long,float,double,text. 当srcTsDataType为boolean, dstTsDataType只能为boolean或text. 当srcTsDataType为NaN, dstTsDataType只能为float, double或text. 当srcTsDataType为数值类型, dstTsDataType的精度需要高于srcTsDataType. 例如:-typeInfer boolean=text,float=double

意思是将推测的类型转为其他类型,比如 数据值是 true ,推断是 boolean,但是想写入 Text,那就可以通过这个参数进行转换

CritasWang avatar Apr 21 '25 02:04 CritasWang

可以先手动改一下 csv 的表头,将 in_time 写成 in_time(INT64),即可成功导入(提前手动创建 timeseries 并设置为 timestamp 类型)。

CritasWang avatar Apr 21 '25 02:04 CritasWang