【问题标题】:Data import integer start with zero数据导入整数从零开始
【发布时间】:2019-07-11 09:21:09
【问题描述】:

我是第一次使用clickhouse,当我像这样进行导入时:

cat /home/data/_XDR_IMPORT_1001_20001010_000001_.tsv | clickhouse-client --password=123 --query="INSERT INTO ts FORMAT TSV";

它给了我一个错误:

第 13 列,名称:dpc,类型:Nullable(Int32),解析文本:“0” 错误:Nullable(Int32) 后的垃圾:“3242”

这是因为我有一个 Int32 类型的列 (dpc),并且该列的值为 03242,所以导入过程似乎只需要 0 并试图在它之后找到水龙头。

请帮助任何人?

【问题讨论】:

  • 您可以发布您的 csv 内容吗?
  • 我的文件是 tsv 而不是 csv。这里是用于一行的内容(列号14的DPC)56576471832196107 4463619586 2100 1 971135975526 971135975736 209 149 103 7 03242 6183 D618303 03429 03770 Z0377003 03429 Z618363 7 6 336346788481679 33634331833 111 32767 2 0 0 111 32767 2 0 32767 0 0 32767 0 0 32767 0 93803 938036788481679 33604807254 88886024826 22258979694 35031366230 313 7 2 80430543068 938 03

标签: clickhouse


【解决方案1】:

好的,你可以使用以下命令:

sed -E "s/(\t+)0([0-9]+)/\1\2/g" 1.tsv /home/data/_XDR_IMPORT_1001_20001010_000001_.tsv | clickhouse-client --password=123 --query="INSERT INTO ts FORMAT TSV";

并希望第一列不包含前导零;)

【讨论】:

    【解决方案2】:

    将 dpc 字段更改为字符串 并添加新列

    ALTER TABLE ts
    ADD COLUMN dpc_int UInt64 MATERIALIZED toUInt64(dpc);
    

    【讨论】:

    • 谢谢 Slach,但是添加新列会增加表格大小,实际大小每天 1 tera,您还有其他解决方案吗?
    • 您是指每天 1Tb 的未压缩数据吗? 03242 不是整数
    • 是的,每天 1Tb 未压缩,但 034242 是整数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-25
    相关资源
    最近更新 更多