"Exception: No data to insert" 在 Docker 下将数据集导入 Clickhouse
"Exception: No data to insert" while importing dataset into Clickhouse under Docker
我正在尝试使用 this manual. I've set up docker image 来玩 Clickhouse。我还成功创建了 table:
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 命令的信息
我正在尝试使用 this manual. I've set up docker image 来玩 Clickhouse。我还成功创建了 table:
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 命令的信息