Clickhouse数据导入
Clickhouse Data Import
我在 Clickhouse 中创建了一个 table:
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)
我做错了什么?
Int8 类型的范围是 -128..127。
2010(第一个值)超出了 Int8 的范围。
如果您更改 table 定义,一切正常:
$ 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...
谢谢uYSIZfoz:
Your file has BOM (EF BB BF bytes at begin).
在我的例子中,原始文件的 header 行中有一个 BOM。我只是排除了使用格式 CSVWithNames.
加载第一行
cat /tmp/qv_stock_20160623035104.csv | clickhouse-client
--query="INSERT INTO stock FORMAT CSVWithNames";
我认为这里的逗号破坏了格式
2010,646,1.00,13
尝试删除所有逗号,然后尝试将其作为 Int 重新插入。
我在 Clickhouse 中创建了一个 table:
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)
我做错了什么?
Int8 类型的范围是 -128..127。 2010(第一个值)超出了 Int8 的范围。
如果您更改 table 定义,一切正常:
$ 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...
谢谢uYSIZfoz:
Your file has BOM (EF BB BF bytes at begin).
在我的例子中,原始文件的 header 行中有一个 BOM。我只是排除了使用格式 CSVWithNames.
加载第一行cat /tmp/qv_stock_20160623035104.csv | clickhouse-client --query="INSERT INTO stock FORMAT CSVWithNames";
我认为这里的逗号破坏了格式
2010,646,1.00,13
尝试删除所有逗号,然后尝试将其作为 Int 重新插入。