kettle小试牛刀

目录

Kettle概述

ETL

Kettle是什么

基本使用

Mysql

作业

作业跳

为什么要用kettle进行同步

单表全量同步

插入/更新

字段格式切换

字符串替换

单表增量同步

作业

开始

转换

同步本次增量数据

记录本次同步时间

测试

错误日志入库

插入/更新

样本行

字段选择

设置变量

SQL脚本

多数据库表融合到一张表

表输入

数据库查询

数据库查询

增加序列(最终表主键)

插入/更新

验证


Kettle概述

ETL

kettle小试牛刀_第1张图片

ETL: 把冷热水加到水壶,进行转换,再倒出去(装载)

Kettle是什么

kettle小试牛刀_第2张图片

kettle小试牛刀_第3张图片

kettle小试牛刀_第4张图片

kettle小试牛刀_第5张图片

基本使用

连线:按住shift + 鼠标右键

CSV文件:以逗号分隔的文件,为CSV文件

kettle小试牛刀_第6张图片

kettle小试牛刀_第7张图片

kettle小试牛刀_第8张图片

kettle小试牛刀_第9张图片

kettle小试牛刀_第10张图片

Mysql

首先lib文件夹下要有 mysql 的驱动 webSpoon 需要关闭再重启

kettle小试牛刀_第11张图片

kettle小试牛刀_第12张图片

kettle小试牛刀_第13张图片

作业

作业跳

kettle小试牛刀_第14张图片

start指定定时任务,转换传入脚本

kettle小试牛刀_第15张图片

为什么要用kettle进行同步

数据迁移的时候,使用Navicat自带的SQL导出,然后到目标数据库执行,这个中间如果有新的业务数据进来,是没有办法进行同步的!

而且这种还比较麻烦

单表全量同步

全量迁移:不常更新的表 代码表,机构表

增量迁移 常更新的表 业务表,用户表

插入/更新

kettle小试牛刀_第16张图片

字段格式切换

kettle小试牛刀_第17张图片

kettle小试牛刀_第18张图片

毫秒更新出问题

kettle小试牛刀_第19张图片

kettle小试牛刀_第20张图片

字符串替换

可以将源表中的某个值替换成想要的值

kettle小试牛刀_第21张图片

kettle小试牛刀_第22张图片

kettle小试牛刀_第23张图片

kettle小试牛刀_第24张图片

单表增量同步

通过时间戳来实现

oracle:  取同步时间最大值,如果同步时间为空,则返回当前日期减去一天
SELECT nvl(MAX(tbsj),SYSDATE - 1) as tbsj FROM t_rz
​
mysql:  取同步时间最大值,如果同步时间为空,则返回当前日期减去一天
SELECT IFNULL(MAX(tbsj), DATE_SUB(CURDATE(), INTERVAL 1 DAY)) FROM t_rz;

作业

kettle小试牛刀_第25张图片

开始

新建一个作业,没有转换,再去新建转换

kettle小试牛刀_第26张图片

转换

这里运行后 同步时间 是微秒级别,需要去掉后面的 9个0

kettle小试牛刀_第27张图片

kettle小试牛刀_第28张图片

kettle小试牛刀_第29张图片

同步本次增量数据

oracle: 获取大于指定日期的数据
SELECT * FROM t_user  WHERE gxsj > to_date('2020-9-1 20:15:48','yyyy-mm-dd HH24:MI:SS')
mysql:  获取大于指定日期的数据
SELECT * FROM t_user WHERE gxsj > '2023-03-18 20:15:48';
​
SELECT * FROM t_user WHERE gxsj >  SUBSTR('2023-03-18 20:15:48.000000000',1,19);

kettle小试牛刀_第30张图片

注意:上面忘了勾选 替换SQL语句里面的变量, 记得勾选上!

kettle小试牛刀_第31张图片

记录本次同步时间

oracle: 向同步日志插入系统当前时间
insert into t_rz valuse(seq_t_rz.nextval,'T_USER','1',sysdate);
commit;
​
mysql
INSERT INTO t_rz(BM,RESULT,TBSJ) VALUES('T_USER','1',SYSDATE())

kettle小试牛刀_第32张图片

测试

kettle小试牛刀_第33张图片

第一次同步

kettle小试牛刀_第34张图片

kettle表中大于TBSJ的数据过来

kettle小试牛刀_第35张图片

第二次同步

kettle小试牛刀_第36张图片

kettle表中大于TBSJ的数据过来

kettle小试牛刀_第37张图片

错误日志入库

造错误数据,将 t_user 中的sex数据,从 char(1) 改成 char(2) 这样同步到 t_user_kettle 中就会有错误

kettle小试牛刀_第38张图片

kettle小试牛刀_第39张图片

oracle
alter table t_rz add err_desc varchar2(4000);
mysql
ALTER TABLE t_rz ADD COLUMN err_desc VARCHAR(4000);

插入/更新

右键,选择 错误处理

kettle小试牛刀_第40张图片

样本行

选择错误处理 步骤

kettle小试牛刀_第41张图片

字段选择

kettle小试牛刀_第42张图片

设置变量

kettle小试牛刀_第43张图片

kettle小试牛刀_第44张图片

SQL脚本

kettle小试牛刀_第45张图片

多数据库表融合到一张表

kettle小试牛刀_第46张图片

表输入

kettle小试牛刀_第47张图片

kettle小试牛刀_第48张图片

数据库查询

kettle小试牛刀_第49张图片

数据库查询

kettle小试牛刀_第50张图片

kettle小试牛刀_第51张图片

增加序列(最终表主键)

kettle小试牛刀_第52张图片

插入/更新

kettle小试牛刀_第53张图片

验证

kettle小试牛刀_第54张图片

你可能感兴趣的:(java,数据库)