logo资料库

DATASTAGE增量抽取.docx

第1页 / 共3页
第2页 / 共3页
第3页 / 共3页
资料共3页,全文预览结束
增量方法——触发器方式
增量方法——触发器方式 增量抽取方式: 创建增量日志表 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 ⑩①配置‘抽取转换’,进行字段之间的转换, 保存之后进行编译,运行,查看日志,有数据 流通表示成功
分享到:
收藏