Вставьте данные в clickhouse, используя файл CSV, добавив '&' к первой записи с помощью CURL |удар - PullRequest
0 голосов
/ 27 сентября 2018

У меня проблемы при попытке вставить данные с помощью CSV-файла в clickhouse с использованием CURL, самое первое значение - это добавление некоторых символов и выглядит следующим образом:

┌─name─ ┬─lastname─┐
│&'Mark'│ Olson    │
│ Joe   │ Robins   │
└────── ┴──────────┘

мой CSV-файл в порядке,это так:

'Mark','Olson'
'Joe','Robins'

, как вы видите, таблица добавляет первое значение в первой записи как &'Mark'

Это мой код в bash

query="INSERT INTO Myschema.persons FORMAT CSV"
cat ${csv} | curl -X POST -d "$query" $user:$password@localhost:8123 --data-binary @-

Знаете ли вы, в чем проблема?

Спасибо

1 Ответ

0 голосов
/ 27 сентября 2018

Я думаю, вам следует использовать следующий формат, где запрос является частью URL

cat *.csv |curl http://localhost:8123/?query=INSERT%20INTO%20Myschema.persons%20FORMAT%20CSV' --data-binary @-

Я не уверен, почему ваш curl не работает, но я думаю, что Clickhouse имеет правила синтаксического анализа, которые не могутиспользуйте указанный вами формат, ${query} и ${csv}, оба из которых являются параметрами к POST, добавляются в окончательном URL-адресе с помощью символа & &, в то время как синтаксический анализ Clickhouse не может рассмотреть этот случай.

Цитаты из документации Clickhouse -

Сам запрос можно отправить либо в теле POST, либо в параметре URL.

и

Метод POSTПередача данных необходима для запросов INSERT.В этом случае вы можете записать начало запроса в параметре URL и использовать POST для передачи данных для вставки.Данные для вставки могут быть, например, разделенным табуляцией дампом из MySQL.Таким образом, запрос INSERT заменяет LOAD DATA LOCAL INFILE из MySQL.

Дополнительные сведения и примеры приведены здесь - https://clickhouse.yandex/docs/en/interfaces/http_interface/

...