0

我正在为 Windows 使用 Docker:

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

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

  1. 现在运行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
    

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

  2. 现在运行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' "
    

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

提前致谢。

4

1 回答 1

3

我认为您应该先将文件挂载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"` 

希望它有效。

于 2018-05-04T10:41:56.250 回答