Clickhouse: импортируйте данные, содержащие двойные кавычки, экранированные обратной косой чертой

Я пытаюсь импортировать фрагмент 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"

Работает нормально.

Не могли бы вы помочь мне в этом вопросе.

Спасибо.


person Shiva Kumar SS    schedule 02.05.2020    source источник


Ответы (2)


CSV spec требует:

  1. Если для заключения полей используются двойные кавычки, то двойные кавычки внутри поля должны быть экранированы, поставив перед ними другую двойную кавычку. Например:

    «ааа», «б», «бб», «ссс»

Необходимо либо изначально сгенерировать корректный CSV-файл, либо исправить его перед передачей CH-клиенту:

cat sample.csv | sed 's/\\"/""/g' | clickhouse-client --query="INSERT INTO logs.processing FORMAT CSV"
person vladimir    schedule 02.05.2020
comment
Идеально. Меня устраивает. Было бы здорово, если бы при импорте соблюдалась обратная косая черта. - person Shiva Kumar SS; 02.05.2020

Я разместил запрос в CH github. похоже, что на данный момент у них есть только двойные кавычки только как экранирующий символ.

https://github.com/ClickHouse/ClickHouse/issues/10624

person Shiva Kumar SS    schedule 02.05.2020