我可以启动服务器并使用客户端,如下所示...
启动服务器实例
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 image?
发布于 2017-02-14 17:28:50
您可以向容器中运行的程序发送数据,就像向主机上运行的程序发送数据一样:
echo "hello" | docker run -i --rm ubuntu cat(输出hello和exists)
在您的情况下,这应该是可行的:
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"发布于 2017-02-14 17:19:56
这里有一种方法,虽然有点笨拙...
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。
https://stackoverflow.com/questions/42221464
复制相似问题