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

java入门,从CK导一部分数据到mysql

一、需求

需要从生产环境ck数据库导数据到mysql,数据量大约100w条记录。

二、处理步骤

1、这里的关键词是生产库,第二就是100w条记录。所以处理数据的时候就要遵守一定的规范。首先将原数据库表进行备份,或者将需要导出的数据建一张新的表了来操作,切记不能在原数据表上进行操作,因为如果操作有误,恢复就很麻烦了,或者直接造成生产事故。

2、100W条记录,那么我们直接通过SQL语句导出来,再导到mysql,显然不现实。第一sql语法不一样,第二数据量太大,导出来的SQL文件打不开。

三、实现

1、ck中创建一个新的临时表,存储需要导出的数据

 CREATE TABLE data_dwd.data_user_import_cdj_1113
(phone                  Nullable(String) ,
one_id                 String ,
reg_time_platform      Nullable(String) ,
level_no               Nullable(String) ,
employee_id_mall       Nullable(String) ,
reg_time_travel        Nullable(String) ,
activate_status_travel Nullable(String) ,
activate_date_travel   Nullable(String) ,
platform_reg_travel    Nullable(String) ,
level_name_travel      Nullable(String) ,
available_integral     Nullable(String) ,
isaccpmak              Nullable(String) ,
reg_time_hotel         Nullable(String) ,
platform_reg_hotel     Nullable(String) ,
level_name_hotel       Nullable(String) ,
x_mph_kctp             Nullable(String) ,
reg_time_invest        Nullable(String) ,
platform_reg_invest    Nullable(String) ,
level_name_invest      Nullable(String)
)
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/{shard}/data_user_import_cdj_1113','{replica}')
ORDER BY ( one_id)
SETTINGS index_granularity = 8192

2、将需要导出的数据,插入到临时表

--将数据写入中间表
insert  into  data_dwd.data_user_import_cdj_1113 select 
phone                   ,
one_id                  ,
reg_time_platform       ,
level_no                ,
employee_id_mall        ,
reg_time_travel         ,
activate_status_travel  ,
activate_date_travel    ,
platform_reg_travel     ,
level_name_travel       ,
available_integral      ,
isaccpmak               ,
reg_time_hotel          ,
platform_reg_hotel      ,
level_name_hotel        ,
x_mph_kctp              ,
reg_time_invest         ,
platform_reg_invest     ,
level_name_invest   from    data_user_import  where  phone is  not null;

这里处理的关键信息,是获取需要的数据和字段就行了。原因,原始表一共有400多个字段,实际需要的就20几个,所以这里建的临时表没必要和原始表的表结构一样。

3、创建mysql表,表结构应对应上ck表

--创建mysql表
CREATE TABLE  data_user_import_cdj
(phone                  varchar(255) ,
one_id                  varchar(255) ,
reg_time_platform      varchar(255) ,
level_no               varchar(255) ,
employee_id_mall       varchar(255) ,
reg_time_travel        varchar(255) ,
activate_status_travel varchar(255) ,
activate_date_travel   varchar(255) ,
platform_reg_travel    varchar(255) ,
level_name_travel      varchar(255) ,
available_integral     varchar(255) ,
isaccpmak              varchar(255) ,
reg_time_hotel         varchar(255) ,
platform_reg_hotel     varchar(255) ,
level_name_hotel       varchar(255) ,
x_mph_kctp             varchar(255) ,
reg_time_invest        varchar(255) ,
platform_reg_invest    varchar(255) ,
level_name_invest      varchar(255)
)

4、将临时表数据导入到mysql数据表

这时可以通过工具导

这个步骤一般比较慢的,但是导100w的数据应该没什么问题

5、数据导到mysql数据库,就可以在mysql数据库对数据进行加工。

这里同样的要对数据加工前,最好使用一张新的表来存储数据加工,而不是直接在原来的表上加工,以防加工错误,数据无法恢复,又需要重新导数据。

比如:从数据中选出10W条处理出来

 create table   tmp_data_user_import_zlt_10W  as select * from     data_user_import_cdj where  reg_time_platform is not  null limit  100000; 

    create table   tmp_data_user_import_zlt_10W  as select * from     data_user_import_cdj where  reg_time_platform is not  null limit  100000;

应创建新的表来存储,而不是在原表上进行操作。

实际开发中,处理完的数据,可能还要导到其他数据库,会涉及到存储过程或者定时任务的一些编写。

http://www.lryc.cn/news/233967.html

相关文章:

  • 表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
  • Stable Diffusion - StableDiffusion WebUI 软件升级与扩展兼容
  • git创建新分支将项目挂载到新分支操作
  • WEB 自动化神器 TestCafe(一)—安装和入门篇
  • asp.net 学校资源信息管理系统VS开发sqlserver数据库web结构c#编程计算机网页项目
  • 【汇编】栈及栈操作的实现
  • 前段-用面向对象的方式开发一个水管小鸟的游戏
  • Java中利用OpenCV进行人脸识别
  • 23111708[含文档+PPT+源码等]计算机毕业设计基于javaweb的旅游网站前台与后台旅景点
  • Windows安装nvm【node.js版本管理工具】
  • 让资产权利归于建设者:Kiosk使过程变得更简单
  • MLP感知机python实现
  • Es 拼音搜索无法高亮
  • java线性并发编程介绍-锁(二)
  • Java JPA详解:从入门到精通
  • 使用Open3D库处理3D模型数据的实践指南
  • 代码随想录算法训练营第五十八天丨 动态规划part18
  • Pytest自动化测试框架介绍
  • 基于SpringBoot+Redis的前后端分离外卖项目-苍穹外卖(五)
  • Oracle 监控的指标有哪些和oracle巡检的内容
  • Uniapp有奖猜歌游戏系统源码 带流量主
  • 【算法与数据结构】前言
  • (六)什么是Vite——热更新时vite、webpack做了什么
  • 贝加莱MQTT功能
  • 基于JavaWeb+SSM+购物系统微信小程序的设计和实现
  • 为什么需要Code Review?
  • 【计算机网络笔记】ICMP(互联网控制报文协议)
  • Git教程1:生成和提交SSH公钥到远程仓库
  • 贝茄莱BR AS实时数据采集功能
  • Git的基本操作以及原理介绍