增量方法——触发器方式
增量抽取方式:
创建增量日志表 INC_LOG,用以记录需进行增量抽取表格 TEST 的变动。
而后再给这行进行增量抽取的表创建触发机制,一旦对 TEST 进行 INSERT、UPDATE、DELETE,
都会记录到增量日志表中。
然后根据 TEST 关联到 INC_LOG 的外键,进行抽取即可。
1.对于源表为 oracle 的数据库,可以采用触发器方式进行。
①先创建增量日志表 INC_LOG
create table INC_LOG(
ID NUMBER primary key, --自增主键
TABLE_NAME VARCHAR2(200),--源表名称
RECORD_ID NUMBER,--源表增量记录的主键值
DML_TYPE VARCHAR2(1),--增量类型,I表示新增:U表示更新;D表示删除
EXECUTE_DATE DATE)--发生时间
②创建一个序列 SEQ_INC,用以触发器写增量日志时生成 ID 值
create sequence seq_inc minvalue 1 maxvalue 100 start with 1 increment
by 1 nocycle nocache;
③构建测试表 Test,主键 ID,插入几百条原纪录
④针对要监听获取增量的表 Test,创建一个触发器
create OR replace trigger INC_TR BEFORE INSERT OR UPDATE
endif;
if DELETING then
OR DELETE ON test for each row
declare dml_type varchar2(1);
begin
if INSERTING then dml_type:='I’;
elsif UPDATING then dml_type:= 'U' ;
elsif DELETING then dml_type:='D';
INC_LOG(ID,TABLE_NAME,RECORD_ID,DML_TYPE,EXECUTE_DATE)
values(seq_inc.nextval,'test',:old.ID,dml_type,sysdate);
insert into
else
insert into
INC_LOG(ID,TABLE_NAME,RECORD_ID,DML_TYPE,EXECUTE_DATE)
values(seq_inc.nextval,'test',:new.ID,dml_type,sysdate);
endif;
end;
alter trigger INC_TR ENABLE;
⑤一切准备就绪之后,进行触发器的测试,没问题了就能将源表 test 通过主键 ID 进行字段
的关联,而后进行增量数据的抽取;
⑥打开 Datastage Designer,拖拽 Stage 成 如下的样板(当然,为了方便先将源表 Test、志
表 INC_LOG 和目标表等表定义导入到 Datastage Manage 中)。
⑦先配置‘test 增量获取’这个 stage,输入数据源名,账号密码,载入表定义,这些操作
就不用多解释了
⑧如图输入抽取条件,然后点击 view data 看是否如实抽取了数据
⑨再配置‘增量数据加载’,输入数据源名,账号密码,载入表定义,输入有用户前缀的表
名
⑩在 Update action 里面选择 Update existing rows or insert new new rows
⑩①配置‘抽取转换’,进行字段之间的转换,
保存之后进行编译,运行,查看日志,有数据
流通表示成功