【问题标题】:Couldn't parse csv file if value contains from '如果值包含来自 ',则无法解析 csv 文件
【发布时间】:2018-11-25 08:58:07
【问题描述】:

这里是演示 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上的相关issue

【问题讨论】:

    标签: yandex clickhouse


    【解决方案1】:

    我刚刚遇到了同样的问题。我创建了一个 PR https://github.com/yandex/ClickHouse/pull/2574

    您可以指定 format_allow_csv_single_quote=0 来解析 csv 数据,其中包含以 ' 开头的字符串字段

    编辑:

    现在已经合并了。

    【讨论】:

      【解决方案2】:

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

      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 │
      └────────────┴────┴─────────────┴──────┘
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-09-02
        • 1970-01-01
        • 2011-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多