kettle 增量式更新方案
本文利用 kele 来实现 oracle 数据库的有删除,有增加,有更新的增量式同步:
一、工作原理
分成 2 个独立的 transformaon ,一个负责 insert/update,另一个只负责
delete。然后在一个 job 里,将二者结合。
insert/update 增量同步原理:采用的是“时间戳”的方式,来从源表中过滤
出需要增量更新的数据,然后利用 kele 的”insert/update” 本身的功能自动
判断是“insert” 还是 ”update”不需要人工介入;另外,对于“update“操作,
需要建立个”before update” 触发器,来更新时间戳字段,来表明未被同步
的 update 操作。
delete 操作的增量同步原理:使用一个中间表来记录删除的源表”主键“,
“主键”数据通过在源表建立“aer delete” 触发器写入。该表作为“目标表”删
除数据的判断依据,当目标表删除完成后,将中间表数据清空;
二、实施
0.准备工作:
在源和目的端分别创建测试表 ggtest1.t1_1
create table ggtest1.t1_1
(pid number primary key ,
name varchar2(10 char),
age number)
//注意,源表必须限定主键不能被更新(如果源表无主键,应该增加代理主
键)
1. insert/update 同步方案:
(1) 在源表和目的表均增加时间戳字段。
alter table ggtest1.t1_1 add (moddate mestamp(6) default
current_mestamp);
并在该字段上创建索引:
create Index IDX_t1_1_moddate on ggtest1.t1_1(moddate);
评论0