如果值包含from,则无法分析csv文件

pn9klfpd  于 2021-07-15  发布在  ClickHouse
关注(0)|答案(2)|浏览(538)

以下是演示ddl:

CREATE TABLE X (
    eventdate        Date default toDate(now()),
    f1               String,
    f2               String,
    f3               String
) ENGINE = MergeTree(eventdate, (f1, f2, f3), 8192)

当我尝试导入数据时,clickhous失败并出现错误:

$echo "US,'Ewa Beach, Test" | clickhouse-client --database default --query "insert into X(f1, f2, f3) format CSV"

Code: 27. DB::Exception: Cannot parse input: expected , at end of
stream.: (at row 1)

这是我的click house版本(如果我没搞错的话,是最新的版本):

$ clickhouse-client --version
ClickHouse client version 1.1.54385.

问题是字段f2的值中的“符号”。拜托,有什么解决办法吗?
也许有一些选项可以强制使用双引号作为字符串分隔符,并将单引号视为没有特殊意义的普通符号?请,任何解决方案都是欢迎的。
我只是测试了相同的值,但作为tsv,它的工作。但不幸的是我现在不能迁移到tsv。我需要找出一些csv的解决办法,使它与单引号在字段值工作。
附笔
有趣的是,如果只剩下两个字段,它将正确解析csv。

CREATE TABLE X (
    eventdate        Date default toDate(now()),
    f1               String,
    f2               String
) ENGINE = MergeTree(eventdate, (f1, f2), 8192)

以下查询工作:

$echo "US,'Ewa Beach" | clickhouse-client --database default --query "insert into X(f1, f2) format CSV"

下面是github的相关问题

yruzcnhs

yruzcnhs1#

我也遇到了同样的问题。我创建了一个公关https://github.com/yandex/clickhouse/pull/2574
用它你可以指定 format_allow_csv_single_quote=0 以字符串开头的字符串字段解析csv数据 ' 编辑:
现在合并了。

deyfvvtc

deyfvvtc2#

对于这样的值,需要使用双引号。

echo "US,\"'Ewa Beach\", Test" | clickhouse-client --host ch_srv --query "insert into X(f1, f2, f3) format CSV"

这很管用。

:) select * from X format CSV;
SELECT *
FROM X 
FORMAT CSV
"2018-06-28","US","'Ewa Beach","Test"
:) select * from X;
SELECT *
FROM X 
┌──eventdate─┬─f1─┬─f2──────────┬─f3───┐
│ 2018-06-28 │ US │ \'Ewa Beach │ Test │
└────────────┴────┴─────────────┴──────┘

相关问题