clickhouse

clickhouse导入csv文件

2023-01-27  本文已影响0人  定金喜

1.抛出问题

我们有两个docker应用,一个是业务应用,docker名称为:cloud_patrol;一个是clickhouse应用,docker名称为clickhouse,业务应用会产生数据,这数据会输出为csv文件,我们需要将这csv文件导入到clickhouse数据库中。


问题描述

2.解决方案

如果在clickhouse容器中,那么导入csv文件很简单

clickhouse-client --user=guandata --password=123456 --query="insert into tableA FORMAT CSV"< /opt/tableA.csv

/opt/tableA.csv为clickhouse容器中的目录地址

但是该业务需要在应用的容器中调用clickhouse-client导入csv,但是该容器没有clickhouse-client,所以不能直接调用,但是有两种方法可以在该容器中调用。

方案1:
进入clickhouse容器

clickhouse-client
clickhouse-client其实只是软连接,真实的可执行文件是/usr/bin/clickhouse,所以可以将这个文件与应用目录进行挂载,这样应用就可以直接调用clickhouse-client。

使用clickhouse调用的方式是:

/usr/bin/clickhouse client --host=127.0.0.1 --port=9000 --user=guandata --password=123456 --query="insert into tableA FORMAT CSV"< /opt/tableA.csv

注意:端口不能为8123,默认是9000,这里的/opt/tableA.csv目录地址为应用的docker容器中的目录,不是clickhouse容器的地址。

方案2:
参考文章:
https://blog.csdn.net/u010797364/article/details/121912358
通过对应用容器进行docker挂载,这样在应用cloud_patrol容器就可以调用clickhouse容器的clickhouse-client。

-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker

在应用cloud_patrol容器可以直接调用

docker exec -i clickhouse clickhouse-client --user=guandata --password=123456 --query="insert into tableA FORMAT CSV"< /opt/tableA.csv

/opt/tableA.csv为cloud_patrol目录中的文件地址。

上一篇 下一篇

猜你喜欢

热点阅读