我可以启动服务器并使用客户端,如下所示...
启动服务器实例
docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 yandex/clickhouse-server
从本机客户端连接到它
docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
如果我不使用docker,导入csv数据就像这样简单......
cat qv_stock_20160620035119.csv | clickhouse-client --query="INSERT INTO stock FORMAT CSV";
如何将cat内容传输到docker镜像?
答案 0 :(得分:1)
您可以像在主机上运行的程序一样将数据发送到容器中运行的程序:
echo "hello" | docker run -i --rm ubuntu cat
(输出hello
并存在)
在您的情况下,这应该有效:
cat host-local_file.csv | docker run -i --rm \
--link some-clickhouse-server:clickhouse-server \
yandex/clickhouse-client \
clickhouse-client --host clickhouse-server \
--query="INSERT INTO stock FORMAT CSV"
答案 1 :(得分:0)
这是一种方式,虽然它有些笨拙......
docker exec <container-name> bash -c "echo \"$(cat <local-file>)\" | <app-in-container>"
这假设您的容器图片中有/bin/bash
。
所以在你的情况下:
docker exec some-clickhouse-client bash -c "echo \"$(cat qv_stock_20160620035119.csv)\" | clickhouse-client --query="INSERT INTO stock FORMAT CSV";"
假设您已经启动了客户端容器并将其命名为some-clickhouse-client
。