clickhouse 分布式表数据导入导出

文章介绍了使用clickhouse客户端和dbeaver工具进行数据导出的方法,以及针对150w数据的查询优化策略。通过对旧表t_fenqun_result重新分区,按照user_id生成hash_code进行分布,以提升查询效率。文中详细阐述了数据导入的步骤,包括创建临时表,删除旧表,重建分布式表并插入数据的过程。
摘要由CSDN通过智能技术生成

数据导出

命令行导出

clickhouse-client -d yourdb --password yourpasswrod --query="select * from t_fenqun_result FORMAT CSV" > fenqun_result.csv

注意参数中间只能有一个空格,否则或报错
导出的数据字段用逗号分割,但是会用双引号包裹,需去掉双引号

sed -i 's/\"//g' fenqun_result.csv

dbeaver工具导出

另外也可以通过dbeaver工具进行数据的导出
选择表->鼠标右键->出现菜单栏->导出数据

选择导出到csv文件
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据导入

此处数据导入是针对分布式表数据的导入
1.需求
针对t_fenqun_result表查询效率慢的问题(数量在150w),要重新分区
旧的t_fenqun_result是 PARTITION BY dt_date ORDER BY (task_id),查询user_id时会全表检索,性能较低。
新的表根据user_id生成hash_code,然后取余 hash_code%128,在查询 user_id 的同时将 hash_code 也作为查询条件。通过观察查询日志,发现检索量很小,有利于检索性能
python 代码
java 代码

2.思路
由于t_fenqun_result是在用表,不能删除后长时间缺失,打算先将重新分区后的数据写入到clickhouse临时表,然后通过临时表再导入,(因为从临时表导入速度很快,150w数据1.6秒就完成导入)

第一步

将数据生成至临时表

-- 分布式表
itv.t_fenqun_result_new_local
-- 总表 
itv.t_fenqun_result_new

第二步

-- 删除旧表
drop table itv.t_fenqun_result on cluster czf_cluster;
drop table itv.t_fenqun_result_local on cluster czf_cluster;

第三步

-- 仿制分布式表
create table itv.t_fenqun_result_local  on cluster czf_cluster as itv.t_fenqun_result_new_local;
-- 创建总表
CREATE TABLE itv.t_fenqun_result AS itv.t_fenqun_result_local ENGINE = Distributed('czf_cluster', 'itv', 't_fenqun_result_local', rand());
-- 插入数据
insert into itv.t_fenqun_result select * from itv.t_fenqun_result_new;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值