失效链接处理 |
Kettle 增量式更新 PDF 下载
本站整理下载:
相关截图:
![]()
主要内容:
一、工作原理
分成2个独立的transformation ,一个负责 insert/update,另一个只负责delete。然后在一个job里,将二者结合。
insert/update 增量同步原理:采用的是“时间戳”的方式,来从源表中过滤出需要增量更新的数据,然后利用kettle的”insert/update” 本身的功能自动判断是“insert” 还是 ”update”不需要人工介入;另外,对于“update“操作,需要建立个”before update” 触发器,来更新时间戳字段,来表明未被同步的update操作。
delete操作的增量同步原理:使用一个中间表来记录删除的源表”主键“,“主键”数据通过在源表建立“after 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 timestamp(6) default current_timestamp);
并在该字段上创建索引:
create Index IDX_t1_1_moddate on ggtest1.t1_1(moddate);
(2)在源表上创建before update触发器,用于update时候对时间戳进行更新
create or replace trigger ggtest1.tr_ggtest1_t1_1_moddate
before update
on ggtest1.t1_1
referencing old as old new as new
for each row
begin
:new.moddate := current_timestamp;
end;
;
/
(3)在Kette中配置Transformation
效果如下:
配置如下:
(3.1)
新建一个“Transformation“;
创建一个“Table input” 命名为-获得目标表最大修改时间(作为源表数据过滤条件)
|