将数据集导入 Docker 下的 Clickhouse 时出现“异常:没有要插入的数据”
Posted
技术标签:
【中文标题】将数据集导入 Docker 下的 Clickhouse 时出现“异常:没有要插入的数据”【英文标题】:"Exception: No data to insert" while importing dataset into Clickhouse under Docker 【发布时间】:2019-01-21 14:19:40 【问题描述】:我正在尝试使用 this manual 来玩 Clickhouse。我已经设置了docker image。我还成功创建了一个表:
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 缺少 -i 参数。这个命令对我有用: curl -X GET 'taxbills.nyc/tax_bills_june15_bbls.csv' | docker run -i --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"跨度> 【参考方案1】:我有点困惑,因为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"
您总是可以在official documentation 中找到有关 docker 命令的信息
【讨论】:
以上是关于将数据集导入 Docker 下的 Clickhouse 时出现“异常:没有要插入的数据”的主要内容,如果未能解决你的问题,请参考以下文章