"Exception: No data to insert"将数据集导入 Docker 下的 Clickhouse 时



我正在尝试使用本手册玩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)

可能是什么原因以及如何解决?

我有点困惑,因为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"

您始终可以在官方文档中找到有关 docker 命令的信息

最新更新