我在clickhouse中创建了一个表:
CREATE TABLE stock
(
plant Int32,
code Int32,
service_level Float32,
qty Int32
) ENGINE = Log
有一个数据文件
:~$ head -n 10 /var/rs_mail/IN/qv_stock_20160620035119.csv
2010,646,1.00,13
2010,2486,1.00,19
2010,8178,1.00,10
2010,15707,1.00,4
2010,15708,1.00,10
2010,15718,1.00,4
2010,16951,1.00,8
2010,17615,1.00,13
2010,17616,1.00,4
2010,17617,1.00,8
我正在尝试加载数据:
:~$ cat /var/rs_mail/IN/qv_stock_20160620035119.csv | clickhouse-client --query="INSERT INTO stock FORMAT CSV";
我犯了个错误
\n2010: 7615,1.00,13ion: Cannot parse input: expected , before: 2010,646,1.00,13
Row 1:
Column 0, name: plant, type: Int32, ERROR: text "2010,64" is not like Int32
: (at row 1)
我做错什么了?
文件:https://yadi.sk/d/ijjlmnbjsjbvc
3条答案
按热度按时间ygya80vv1#
谢谢你uysizfoz:
您的文件有bom(ef bb bf bytes at begin)。
在我的例子中,原始文件的标题行中有一个bom表。我只是排除了使用csvwithnames格式加载第一行。
cat/tmp/qv_stock_20160623035104.csv | clickhouse client--query=“插入股票格式csvwithnames”;
oprakyz72#
int8类型的范围为-128..127。2010(第一个值)超出int8的范围。
如果更改表定义,一切正常:
请注意,我指定的int16对于您的数据来说可能还不够。然后指定int32、int64。。。
eit6fx6z3#
我觉得这里面的逗号破坏了格式
2010,646,1.00,13
尝试删除所有逗号,然后尝试将其作为int插入。