基于数据库数据增量同步_kettle之数据库表同步增量更新

主流程如下:

9f58d562b3c5845d25b67c061d85c467.png

1.准备工作:

先创建2个表:

CREATE TABLE `tt1` (

`id` int(11) NOT NULL,

`name` varchar(50) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `tt2` (

`id` int(11) NOT NULL,

`name` varchar(50) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE==InnoDB DEFAULT CHARSET=utf8;

2.新建作业 为两表新增 最后更新时间 的时间戳

a0bb5818366b3c10857e4f9e71bc415f.png
如果两表不在同一个数据库,数据库连接调整一下即可

22f8b4b6e43059d286c919f60b9fe0e1.png

3.增量实例添加:表插入更新的操作示例(兼容了多次执行)

e050a24c3308fa951d1e6c8014ef7da2.png

4.有增量数据的时候,去触发增量同步。需新建作业:新建临时表存储两表的最大更新时间

5b232723d421d6eecc6edaecd5609147.png

6dcd9e95dce2f18eeea09d8f8f9d3413.png
新建临时表

064253fc50591d6a89b736cca4f9bb55.png
插入两表的最大更新时间

5.同步增量更新相应表:6

4edf6653135ff39fb0ef4efc12b2b798.png

c15c0e2853695d95d91c4ce6b96e857f.png
获取最后更新时间的表

0e4963e7c636dadbb892954d47722130.png
条件转换,默认是数值,这里是字符

4fb6cbdcca494a50b0660285e5c6e7ca.png
最新更新时间是tt1时,需要选择出tt1的数据,方便后面用tt1更新tt2

44709d4f16a1e2de1430feb81bf6cb2c.png
tt1属于流,用tt1去更新目标表的name字段,id有就直接更新,没有就插入

6.为了保证整个任务流可以多次执行,最后我们删除新建的时间戳字段(如果表不在同一个数据库,需要在不同数据库连接中各执行一次):

cbf051cef37617c60ab89ab59b3cf3e8.png

1e44745e7bb4c06911325934073204cf.png
删除时间戳字段

最后完成。

注释:

数据验证有问题,2个都执行了。

step [Switch / Case] 不行,实现不了分支,2个都会执行,说是分支封装在trans里面,但是还是不行,不能控制任务流,这个问题待定.......

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值