首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Clickhouse数据导入

Clickhouse数据导入
EN

Stack Overflow用户
提问于 2016-06-22 04:41:43
回答 3查看 27.1K关注 0票数 4

我在Clickhouse中创建了一个表:

代码语言:javascript
复制
CREATE TABLE stock
(
    plant Int32,
    code Int32,
    service_level Float32,
    qty Int32
) ENGINE = Log

有一个数据文件

代码语言:javascript
复制
:~$ 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

我正在尝试加载数据:

代码语言:javascript
复制
:~$ cat /var/rs_mail/IN/qv_stock_20160620035119.csv | clickhouse-client --query="INSERT INTO stock FORMAT CSV";

我得到了一个错误

代码语言:javascript
复制
\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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-06-24 15:07:19

谢谢你,uYSIZfoz:

您的文件有物料清单(开头为EF、BB、BF字节)。

在我的例子中,原始文件的标题行中有一个BOM。我只是简单地排除了使用CSVWithNames格式加载第一行。

查询cat /tmp/qv_ stock _20160623035104.csv |

-client--query=“插入到库存格式CSVWithNames";

票数 4
EN

Stack Overflow用户

发布于 2016-06-23 05:29:44

Int8类型的范围为-128..127。2010 (第一个值)超出了Int8的范围。

如果你改变了表的定义,一切都是正常的:

代码语言:javascript
复制
$ clickhouse-client 
ClickHouse client version 0.0.53720.
Connecting to localhost:9000.
Connected to ClickHouse server version 1.1.53981.

:) CREATE TABLE stock
:-] (
:-]     plant Int16,
:-]     code Int16,
:-]     service_level Float32,
:-]     qty Int8
:-] ) ENGINE = Log

CREATE TABLE stock
(
    plant Int16, 
    code Int16, 
    service_level Float32, 
    qty Int8
) ENGINE = Log

Ok.

0 rows in set. Elapsed: 0.002 sec. 

:) Bye.
$ mcedit qv_stock_20160620035119.csv

$ cat qv_stock_20160620035119.csv | clickhouse-client --query="INSERT INTO stock FORMAT CSV";
$ clickhouse-client 
ClickHouse client version 0.0.53720.
Connecting to localhost:9000.
Connected to ClickHouse server version 1.1.53981.

:) SELECT * FROM stock

SELECT *
FROM stock

┌─plant─┬──code─┬─service_level─┬─qty─┐
│  2010 │   646 │             1 │  13 │
│  2010 │  2486 │             1 │  19 │
│  2010 │  8178 │             1 │  10 │
│  2010 │ 15707 │             1 │   4 │
│  2010 │ 15708 │             1 │  10 │
│  2010 │ 15718 │             1 │   4 │
│  2010 │ 16951 │             1 │   8 │
│  2010 │ 17615 │             1 │  13 │
│  2010 │ 17616 │             1 │   4 │
│  2010 │ 17617 │             1 │   8 │
└───────┴───────┴───────────────┴─────┘

请注意,我指定的Int16也可能不足以存储您的数据。然后指定Int32、Int64...

票数 3
EN

Stack Overflow用户

发布于 2017-10-27 13:55:41

我认为这个逗号破坏了格式

2010,646,1.00,13

尝试删除所有逗号,然后尝试将其作为Int插入。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37954203

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档