当前位置: 首页 > news >正文

如何快速把Clickhouse数据同步到Mysql

直接使用Clickhouse官方支持的Mysql引擎表的方式!

一、首先创建Mysql引擎表:

CREATE TABLE saas_analysis.t_page_view_new_for_write
(`id` Int64,`shop_id` Nullable(Int64),`session_id` Nullable(String),`client_id` Nullable(String),`one_id` Nullable(String),`browser_ip` Nullable(String),`ip_country` Nullable(String),`ua` Nullable(String),`referer` Nullable(String),`current_url` Nullable(String),`page_type` Nullable(String),`extra_params` Nullable(String),`cloak_strategy` Nullable(String),`cloak_risk_type` Nullable(Int32),`flow_channel` Nullable(String),`first_paint_time` Nullable(Int32),`ready_time` Nullable(Int32),`create_time` DateTime
)ENGINE = MySQL('127.0.0.1:3306', 'saas_analysis', 't_page_view_new', 'mysql_rw', 'password', 0, '1')SETTINGSconnect_timeout = 30,       -- 连接超时时间(秒)read_write_timeout = 1800,  -- 读写超时时间(秒)connection_pool_size = 16,  -- 连接池大小connection_max_tries = 3;

ENGINE配置密码后两位代表:

  • replace_query — 将 INSERT INTO 查询转换为 REPLACE INTO 的标志。如果 replace_query=1,则查询会被替换。(参数值int类型)
  • on_duplicate_clause — 添加到 INSERT 查询中的 ON DUPLICATE KEY on_duplicate_clause 表达式。(参数值String类型)'1' 代表开启,不能和replace_query 同时开启。

二、执行Clickhouse查询写入SQL(insert into select):

-- 会话级别设置(仅当前会话有效)
SET max_execution_time = 1200;  -- 设置为1200秒(20分钟)INSERT INTO saas_analysis.t_page_view_new_for_write
(id,shop_id,session_id,client_id,one_id,browser_ip,ip_country,ua,referer,current_url,page_type,extra_params,flow_channel,first_paint_time,ready_time,create_time
)
SELECTid,shop_id,session_id,client_id,one_id,browser_ip,ip_country,ua,referer,current_url,page_type,extra_params,flow_channel,first_paint_time,ready_time,create_time
FROM saas_analysis.t_page_view
WHERE create_time >='2025-06-02 00:00:00' and create_time < '2025-06-03 00:00:00'

注意:这里由于数据量问题,需要加大CK的最大查询超时时间。

否则会报错 Estimated query execution time (633.9467681108954 seconds) is too long. Maximum: 600.

三、在执行过程中遇到的其他报错:

MySQL server has gone away

①加大客户端的socket_timeout时间为3000000

②加大Mysql允许最大接收数据包

SET GLOBAL max_allowed_packet=10737418240; // 10G

四、执行结果:

数据量大的需要写脚本分批去执行,我这边一天作为一批,一天数据量在2000万,耗时10分钟左右。

http://www.dtcms.com/a/305006.html

相关文章:

  • 解决百度网盘双击没反应打不开的问题
  • Element Plus常见基础组件(二)
  • 16大工程项目管理系统对比:开源与付费版本
  • 科研小tip3|Windows中的CompressAi下载与使用
  • leaflet中绘制轨迹线的大量轨迹点,解决大量 marker 绑定 tooltip 同时显示导致的性能问题
  • 机器学习-十大算法之一线性回归算法
  • 通用算法与深度学习基础
  • 机器学习课程介绍
  • 机器学习线性回归:从基础到实践的入门指南
  • 机器学习——线性回归(LinearRegression)
  • 出现错误,Microsoft store初始化失败。请尝试刷新或稍后返回。
  • 深入理解异或运算(XOR)及应用
  • 【变更性别】
  • Webpack基本概念及核心流程
  • Docker初学者需要了解的几个知识点(一):传统虚拟机 VS容器
  • vscode开发微信小程序
  • Shader开发(四)计算机图形学中的颜色定义
  • pthread库和thread库
  • 42、鸿蒙HarmonyOS Next开发:应用上下文Context
  • 20250729使用WPS打开xlsx格式的电子表格时候隐藏显示fx的编辑栏的方法
  • Linux ssh服务安装、启动与开机自启
  • ESim电工仿真软件(电脑版)使用说明
  • 在CSS中,如果你想设置一个元素的高度(height)与其宽度(width)相匹配,但又希望宽度使用百分比来定义,你可以通过几种方式来实现。
  • imx6ull-驱动开发篇2——字符设备驱动开发步骤
  • Cursor(编程ai) 使用 - 2025.7.26
  • Linux - 权限的理解(深入浅出,详细细微)
  • 安装新的cuda在bashrc中更新路径
  • Java中的代理
  • 2025年06月03日 Go生态洞察:语法层面的错误处理支持
  • word中rtf格式介绍