docker - 如何通过 Docker 容器 clickhouse-client 将 CSV 数据导入表
问题描述
我正在为 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' "
你能告诉我我在导入时做错了什么吗?
提前致谢。
解决方案
我认为您应该先将文件挂载csv
到容器中。要挂载文件,您应该-v C:/Users/sony/Desktop/table1_data.csv :~/table1_data.csv
在 docker 命令上添加选项。所以你的 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"`
希望它有效。
推荐阅读
- angular - Angular:从延迟加载的模块中导出组件
- vim - VIM defaults.vim 没有按预期工作;一些命令只能在主目录下工作
- python - Selenium 循环上的 StaleElementException
- javascript - 单击按钮时显示更多处于反应状态的项目
- python - 解析字典中的数据
- javascript - MessagePack 解码期间内存不足
- xaml - 如何更改特定行的整个网格的背景颜色
- swift - 如何在 Secure Enclave 中生成密钥对,我可以从系统钥匙串中使用它
- c++ - QT:我应该手动断开插槽吗?如果是,如何断开特定插槽?
- python - 如何将 2 个 Webscraped 列表合并为一个