Clickhouse CSV导入DateTime类型字段报错

问题描述:

       使用:

    $ clickhouse-client  --query="INSERT INTO t_test FORMAT CSV" < data.csv

把csv文件导入到Clickhouse表t_test时报错:

问题分析: 

虽然最后的错误是因为字段field37类型是Nullable(DateTime)但对应数据不是日期格式的字符串造成的。但经分析主要原因是同样是Nullable(DateTime)类型的字段field31,field32在匹配数据时各匹配了4列数据,才造成了后续字段与数据对应错误.

...

column 30, name: field31, type: Nullable(DateTime), parsed text:"2015-10-28 00:00:00"

...

column 33, name: field34, type: Nullable(DateTime), parsed text:"NULL,NULL,NULL,NULL"

解决方法:

     修改类型为Nullable(DateTime)的字段类型为Nullable(String)导入正常。

     如果字段必须保持为Nullable(DateTime)类型,可以先建立一个同列名的临时表t_table_tmp,把数据导入到临时表后再使用sql(insert into t_table xxxx as select * from t_table_tmp)语句把临时表t_table_tmp的数据插入到正式表t_table中.

 这也是我们做ETL时常用的技巧。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一个不安分的程序员

祝您财源广进

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值