kettle 实现单表增量同步
实现增量同步整体分为三个步骤:(以mysql数据库为例,其他数据库同理,本人亲测可用,若有不足,欢迎留言指出)
1、获取上次同步时间。
2、查询上次同步时间以外的数据,并新增到目标库中。
3、记录本次同步时间,为下次同步使用。
一、获取上次同步时间
新建同步时间记录表,记录每次同步的时间和同步结果,建表sql如下:
CREATE TABLE `kg_log` (
`FD_OBJECTID` varchar(50) NOT NULL COMMENT '主键',
`tbsj` datetime DEFAULT NULL COMMENT '同步时间',
`bm` char(50) DEFAULT NULL COMMENT '表名',
`result` char(50) DEFAULT NULL COMMENT '同步结果 1代表成功',
PRIMARY KEY (`FD_OBJECTID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='同步时间记录表';
新建转换,命名为:1-获取上次同步时间,拖入表输入和设置变量,效果如下图:
表输入1内容如下:
设置变量2内容如下:maxtime为表输入1中获取到的同步时间
二、根据同步时间查询满足条件的源数据库中的数据,并新增到目标库对应表中,效果如下图:
新建转换,命名为:2-根据同步时间查询满足时间数据
表输入1内容如下图:
字段选择2内容如下:
数据对应内容如下:
三、新增本次同步时间
新建转换:3-新增同步时间
四、新建作业。
作业效果如下:
温馨提示:
双击start可设置定时运行:
同步乱码解决办法: