如何通过 Docker 容器 clickhouse-client 将 CSV 数据导入表

Posted

技术标签:

【中文标题】如何通过 Docker 容器 clickhouse-client 将 CSV 数据导入表【英文标题】:How to import CSV data to table through Docker container clickhouse-client 【发布时间】:2018-05-04 09:29:49 【问题描述】:

我正在使用适用于 Windows 的 Docker:

Docker 版本 18.03.1-ce-win64 Docker 引擎 18.03.1-ce ClickHouse 客户端版本 1.1.54380 ClickHouse 服务器版本 1.1.54380

为了将表中的数据导出为 CSV 格式,我使用以下命令:

    现在运行clickhouse-client 导出容器

    $ docker run -it --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m --query="select * from default.table1 FORMAT CSV" > C:/Users/sony/Desktop/table1_data.csv --host clickhouse-server
    

    注意:上述命令完美运行。

    现在运行 clickhouse-client 容器进行导入

    $ docker run -it --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m -c "cat C:/Users/sony/Desktop/table1_data.csv | clickhouse-client --host clickhouse-server --query='INSERT INTO default.table1 FORMAT CSV' "
    

你能告诉我我在导入时做错了什么吗?

提前致谢。

【问题讨论】:

您可以使用 CH 的 HTTP 接口通过 curl 上传数据 - 查看***.com/a/52011930/303298 【参考方案1】:

我认为您应该先将csv 文件挂载到容器中。要挂载文件,您应该在 docker 命令中添加 -v C:/Users/sony/Desktop/table1_data.csv :~/table1_data.csv 选项。所以你的 docker run 命令应该是这样的:

$ docker run -it --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m -v C:/Users/sony/Desktop/table1_data.csv:~/table1_data.csv -c "cat ~/table1_data.csv | clickhouse-client --host clickhouse-server --query='INSERT INTO default.table1 FORMAT CSV'"

编辑

我的错。安装在文件内将不起作用。试试这个:

cat path_to_file/table1_data.csv | docker run -i --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m --host clickhouse-server --query="INSERT INTO default.table1 FORMAT CSV"

已经在 linux 上试过了,它可以工作。由于cat 不适用于Windows,我发现type 具有相同的功能,老实说没有尝试过:

`type C:/Users/sony/Desktop/table1_data.csv | docker run -i --rm --link clickhouse-server:clickhouse-client yandex/clickhouse-client -m --host clickhouse-server --query="INSERT INTO default.table1 FORMAT CSV"` 

希望它有效。

【讨论】:

感谢您的回复,但它给出了错误,即“错误的参数:无法识别的选项'-v'” 我更新了我的答案,希望它适用于您的环境。 无法运行:“输入设备不是 TTY。如果您使用的是 mintty,请尝试在命令前加上 'winpty'”

以上是关于如何通过 Docker 容器 clickhouse-client 将 CSV 数据导入表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Windows 中使用 Clickhouse 访问 Docker Container 以加载数据? [复制]

使用容器编排工具docker swarm安装clickhouse多机集群

docker 安装 clickhouse

通过kafka和filebeat收集日志 再保存到clickhouse 最后通过grafana展现

我可以使用帮助二进制转储文件恢复数据库 clickhouse 吗?

使用clickhouse-backup工具备份clickhouse数据库