美文网首页clickhouse
clickhouse导入csv文件

clickhouse导入csv文件

作者: 定金喜 | 来源:发表于2023-01-27 22:18 被阅读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目录中的文件地址。

相关文章

网友评论

    本文标题:clickhouse导入csv文件

    本文链接:https://www.haomeiwen.com/subject/fmiehdtx.html