KETTLE4个工作中有用的复杂实例--2、两表数据比较,循环取数据,比较后自动同步(部门、单位数据同步)
附:Kettle实战视频教程,需要的朋友可以看看学习下哈~~
- kettle实战第一讲-文件和数据库表的互相转换处理_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第二讲-数据库单表的全量同步_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第三讲-数据库单表的增量同步_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第四讲-同步错误原因记录到数据库日志表_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第五讲-多个数据库表融合到一个数据库业务表_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第六讲-比较不同的数据库表进行数据的一致性处理_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第七讲-通过配置文件做表的全量同步,一个作业统统搞定_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第八讲-通过配置文件做数据表的增量同步,一个作业统统搞定_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第九讲-通过配置文件做表的全量同步_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第十讲-windows下的kettle作业调度_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第十一讲-Linux下的kettle作业调度_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
KETTLE4个工作中有用的复杂实例--2、两表数据比较,比较后自动同步(部门、单位数据同步)
二、两表数据比较核对,核对后自动同步至目标数据表
目标:比较t_bm表的数据和t_bm_target表的数据,以t_bm表为准,往t_bm_target中进行数据的自动同步;
1、为了给大家更直观的展示,【大喇叭玩转数据库】首先在数据库创建2张表,表结构如下:
- t_bm 部门单位表;
- t_bm_target 部门单位目标表;
1 -- Create table 2 create table T_BM 3 ( 4 organize_code VARCHAR2(200), --单位代码 5 organize_name VARCHAR2(200), --单位名称 6 cjsj DATE --创建时间 7 ) 8 tablespace ZFQLC 9 pctfree 10 10 initrans 1 11 maxtrans 255 12 storage 13 ( 14 initial 64K 15 next 1M 16 minextents 1 17 maxextents unlimited 18 );
1 -- Create table 2 create table T_BM_TARGET 3 ( 4 organize_code VARCHAR2(200), --单位代码 5 organize_name VARCHAR2(200), --单位名称 6 cjsj DATE --创建时间 7 ) 8 tablespace ZFQLC 9 pctfree 10 10 initrans 1 11 maxtrans 255 12 storage 13 ( 14 initial 64K 15 next 1M 16 minextents 1 17 maxextents unlimited 18 );
其中t_bm(单位表)的数据如下图:
t_bm_target(单位目标表)的数据如下图:
2、作业整体流程:
需要用到1个作业和4个转换来操作2张表。
下图为整个作业的流程:
上面流程图就是整个作业的流程,用到了3个转换和2个JS脚本,来实现该需求。
3、获取机构信息数据
3.1获取源数据如下图,sql语句必须要按照机构代码进行排序
3.2获取源数据如下图,sql语句必须要按照机构代码进行排序
3.3 将3.1和3.2的步骤通过hops连线,连接记录集连接控件
选择步骤1和步骤2,连接类型left outer,以步骤1的源表数据为基础创建连接,连接字段选择organize_code字段。
3.4 设置条件过滤,如果organize_code为空的话,则什么都不做,不为空的话,放入数据流中
3.5 字段选择,将不为空的数据放到字段选择中,并复制记录到结果,供下一个转换步骤使用
3.6 JavaScript脚本验证,获取数据并设置到变量中
3.7 检验字段的值,获取数据并设置到变量中
3.8 计数器累加,获取i中的变量,并将结果放入detail明细中
3.9 机构同步处理流程
3.9.1 机构同步处理-获取数据,将上个步骤的detail数据放入变量中
3.9.2 sql脚本 执行插入t_bm_target表
**注意:因某些限制,最新源代码和后续通用配置实现数据抽取 已放置在笔者公众号上,请关注微信公众号: 【JAVA大师】, 回复关键字:【KETTLE】,获取kettle安装程序和运行实例(表结构和kjb、ktr文件)**。同时笔者原创了一套视频教程:现免费发放100套,先到先得。获得方法:扫描下方二维码,关注获得