有一堆或者太长的SQL需要执行,可以写成一个文件,批量执行:

clickhouse-client --user 用户名 --password 密码 -d 数据库 --multiquery <  /root/temp.sql

查看SQL的执行计划:

clickhouse-client -h localhost --send_logs_level=trace  <<<"SQL语句" >/dev/null

导入为csv文件:

clickhouse-client --query="select * from default.t_city" > city.csv

或者

# echo 'select * from default.t_city' | curl localhost:8123?database=default -udefault:password -d @- > table_name.sql

导入csv文件:

# cat city.csv | clickhouse-client --query "insert into city FORMAT CSV"

比较小的数据量导出csv文件,带上字段名,然后导入

Clickhouse> select * from default.t_city INTO OUTFILE '/data/t_city.csv' FORMAT CSVWithNames;

SELECT *
FROM default.t_city
INTO OUTFILE '/data/t_city.csv'
FORMAT CSVWithNames


8 rows in set. Elapsed: 0.050 sec. 


#cat /data/t_city.csv | clickhouse-client --query="INSERT INTO default.t_city FORMAT CSVWithNames"  --password

当数据存在两个集群或者主机的时候可以采用方法:

insert into default.t_city VALUES
select * from remote('127.0.0.1:9000', default, t_city);


当数据巨大的时候可以采用官方提供的工具clickhouse-copier:
clickhouse-client --host <source>   -q "SELECT * FROM default.t_city FORMAT CSVWithNames" | \
clickhouse-client --host <target> --port 9000  -q "INSERT INTO defualt.t_city FORMAT CSVWithNames"

利用linux的管道命令 节省内存,磁盘和运行时间。

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐