«Исключение: нет данных для вставки» при импорте набора данных в Clickhouse в Docker - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь поиграть с Clickhouse, используя это руководство . Я настроил изображение докера . Я также успешно создал таблицу:

CREATE TABLE tax_bills_nyc
(
    bbl Int64,
    owner_name String,
    address String,
    tax_class String,
    tax_rate String,
    emv Float64,
    tbea Float64,
    bav Float64,
    tba String,
    property_tax String,
    condonumber String,
    condo String,
    insertion_date DateTime MATERIALIZED now()
)
ENGINE = MergeTree
PARTITION BY tax_class
ORDER BY owner_name

Ok.

Я вышел из клиента Clickhouse и проверил, запущен ли контейнер Docker:

CONTAINER ID        IMAGE                      COMMAND             CREATED             STATUS              PORTS                          NAMES
55991995335b        yandex/clickhouse-server   "/entrypoint.sh"    About an hour ago   Up About an hour    8123/tcp, 9000/tcp, 9009/tcp   some-clickhouse-server

Я пытаюсь импортировать набор образцов данных с помощью следующей команды:

curl -X GET 'http://taxbills.nyc/tax_bills_june15_bbls.csv' | docker run --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server --input_format_allow_errors_num=10 --query="INSERT INTO test_database.tax_bills_nyc FORMAT CSV"

И я получаю следующую ошибку:

 % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0  176M    0  2641    0     0   7494      0  6:50:28 --:--:--  6:50:28  7481Code: 108. DB::Exception: No data to insert

  0  176M    0 94321    0     0  35245      0  1:27:16  0:00:02  1:27:14 35233
curl: (23) Failed writing body (0 != 16384)

В чем может быть причина и как это исправить?

1 Ответ

0 голосов
/ 23 февраля 2019

Я немного запутался, потому что docker run используется для запуска (запуска не существовало) контейнера.Я не уверен, что docker run - это то, что вы должны делать после успешной проверки того, что ваш контейнер работает.

Вместо docker run вы должны использовать

docker exec -i <container-id-or-name>

Итак, ваша строкадолжно быть:

curl -X GET 'http://taxbills.nyc/tax_bills_june15_bbls.csv' | docker exec -i some-clickhouse-server --query="INSERT INTO test_database.tax_bills_nyc FORMAT CSV"

Вы всегда можете найти информацию о командах докера в официальной документации

...