Clickhouse:导入双引号被反斜杠转义的数据
Clickhouse : import data having double quotes escaped by backslash
我正在尝试导入一个 html 片段,它是 csv 中某一列的一部分。
html 片段中有双引号,它被转义了。此 csv 是使用 apache spark 创建的。
为了说明问题,我刚刚用最少的数据创建了 2 列。
CREATE TABLE logs.processing ( ts String,text String) ENGINE = Log
cat sample.csv // Content of the file
"Fri, 01 May 2020 06:47:05 UTC","<html id=\"html-div\">"
在抛出异常后发出导入命令。
cat sample.csv | clickhouse-client --query="INSERT INTO logs.processing FORMAT CSV"
异常
Code: 117. DB::Exception: Expected end of line
如果我将 sample.csv 的内容更改为
"Fri, 01 May 2020 06:47:05 UTC","col2"
它工作正常。
你能帮我解决这个问题吗?
谢谢。
CSV spec需要:
If double-quotes are used to enclose fields, then a double-quote
appearing inside a field must be escaped by preceding it with
another double quote. For example:
"aaa","b""bb","ccc"
它需要首先生成有效的 CSV 文件或在传递给 CH 客户端之前修复它:
cat sample.csv | sed 's/\"/""/g' | clickhouse-client --query="INSERT INTO logs.processing FORMAT CSV"
我已经在 CH github 中发布了查询。看起来他们现在只有双引号作为转义字符。
我正在尝试导入一个 html 片段,它是 csv 中某一列的一部分。 html 片段中有双引号,它被转义了。此 csv 是使用 apache spark 创建的。
为了说明问题,我刚刚用最少的数据创建了 2 列。
CREATE TABLE logs.processing ( ts String,text String) ENGINE = Log
cat sample.csv // Content of the file
"Fri, 01 May 2020 06:47:05 UTC","<html id=\"html-div\">"
在抛出异常后发出导入命令。
cat sample.csv | clickhouse-client --query="INSERT INTO logs.processing FORMAT CSV"
异常
Code: 117. DB::Exception: Expected end of line
如果我将 sample.csv 的内容更改为
"Fri, 01 May 2020 06:47:05 UTC","col2"
它工作正常。
你能帮我解决这个问题吗?
谢谢。
CSV spec需要:
If double-quotes are used to enclose fields, then a double-quote appearing inside a field must be escaped by preceding it with another double quote. For example:
"aaa","b""bb","ccc"
它需要首先生成有效的 CSV 文件或在传递给 CH 客户端之前修复它:
cat sample.csv | sed 's/\"/""/g' | clickhouse-client --query="INSERT INTO logs.processing FORMAT CSV"
我已经在 CH github 中发布了查询。看起来他们现在只有双引号作为转义字符。