Kettle:使用触发器和快照表进行增量数据同步
2017-11-29 15:46
429 查看
本文介绍了使用快照表和触发器进行增量数据同步。主库为Oracle 11g数据库,针对需要同步的表建立增量数据临时表以及触发器并通过kettle定时同步到PostgreSQL数据库。
1、主库创建快照表和触发器
注意:快照表结构和源表结构必须一致!
2、创建一个针对表增删改的转换
从kettle菜单中依次选择“文件”-->“新建”-->“转换”或者按ctrl+N快捷键创建。然后依次选择“输入”-->“表输入”,“输出”-->“插入/更新”和“输出”-->“删除”,执行三次,如下图所示:
3、“表输入”控件,查询主库(Oracle)的快照表
4、“插入/更新”控件,插入数据到从库(PostgreSQL)的表,查询的关键字要求唯一
5、“删除”控件,将主库的快照表中的数据删除
6、新建“作业”控件
新建作业控件,将三个转换引用起来,总览如下图所示:
Insert转换:
Update转换:
Delete转换:
发送邮件:
1、主库创建快照表和触发器
注意:快照表结构和源表结构必须一致!
--创建插入快照表 CREATE TABLE SPWUSER.WEB_CUSTOMER_INSERT_TMP ( ID NUMBER NOT NULL, NAME VARCHAR2(128 BYTE) NOT NULL, CREATED TIMESTAMP(6) WITH LOCAL TIME ZONE DEFAULT (current_timestamp) NOT NULL, MODIFIED TIMESTAMP(6) WITH LOCAL TIME ZONE DEFAULT (current_timestamp) NOT NULL ); --创建更新快照表 CREATE TABLE SPWUSER.WEB_CUSTOMER_UPDATE_TMP ( ID NUMBER NOT NULL, NAME VARCHAR2(128 BYTE) NOT NULL, CREATED TIMESTAMP(6) WITH LOCAL TIME ZONE DEFAULT (current_timestamp) NOT NULL, MODIFIED TIMESTAMP(6) WITH LOCAL TIME ZONE DEFAULT (current_timestamp) NOT NULL ); --创建删除快照表 CREATE TABLE SPWUSER.WEB_CUSTOMER_DELETE_TMP ( ID NUMBER NOT NULL, NAME VARCHAR2(128 BYTE) NOT NULL, CREATED TIMESTAMP(6) WITH LOCAL TIME ZONE DEFAULT (current_timestamp) NOT NULL, MODIFIED TIMESTAMP(6) WITH LOCAL TIME ZONE DEFAULT (current_timestamp) NOT NULL ); --创建插入触发器 CREATE OR REPLACE TRIGGER SPWUSER.WEB_CUSTOMER_INSERT_TRI AFTER INSERT ON SPWUSER.WEB_CUSTOMER FOR EACH ROW BEGIN INSERT INTO WEB_CUSTOMER_INSERT_TMP (ID, NAME, CREATED, MODIFIED) VALUES (:new.id, :new.name, :new.created, :new.modified); END; / --创建删除触发器 CREATE OR REPLACE TRIGGER SPWUSER.WEB_CUSTOMER_DELETE_TRI AFTER DELETE ON SPWUSER.WEB_CUSTOMER FOR EACH ROW BEGIN INSERT INTO WEB_CUSTOMER_DELETE_TMP (ID, NAME, CREATED, MODIFIED) VALUES (:old.ID, :old.NAME, :old.created, :old.modified); END; / --创建更新触发器 CREATE OR REPLACE TRIGGER SPWUSER.WEB_CUSTOMER_UPDATE_TRI AFTER UPDATE ON SPWUSER.WEB_CUSTOMER FOR EACH ROW BEGIN INSERT INTO WEB_CUSTOMER_UPDATE_TMP (ID, NAME, CREATED, MODIFIED) VALUES (:old.ID, :old.NAME, :old.created, :old.modified); END; /
2、创建一个针对表增删改的转换
从kettle菜单中依次选择“文件”-->“新建”-->“转换”或者按ctrl+N快捷键创建。然后依次选择“输入”-->“表输入”,“输出”-->“插入/更新”和“输出”-->“删除”,执行三次,如下图所示:
3、“表输入”控件,查询主库(Oracle)的快照表
4、“插入/更新”控件,插入数据到从库(PostgreSQL)的表,查询的关键字要求唯一
5、“删除”控件,将主库的快照表中的数据删除
6、新建“作业”控件
新建作业控件,将三个转换引用起来,总览如下图所示:
Insert转换:
Update转换:
Delete转换:
发送邮件:
相关文章推荐
- 使用Kettle工具进行增量数据同步
- oracle使用快照和触发器同步数据
- 使用Goldengate的UserExit进行增量数据同步
- 使用kettle进行增量抽取数据
- linux 使用rsync进行数据增量同步
- Linux系统下如何使用rsync进行数据同步
- Oracle 快照及 dblink使用 (两台服务器数据同步)
- Merge(在一条语句中使用Insert,Update,Delete) 对两个表进行同步数据
- 使用Git在Mac和Windows系统之间进行同步数据
- Kettle中通过触发器方式实现数据 增量更新
- 使用物化视图的方式进行表级数据同步示例
- 针对某个表使用高级复制进行数据同步示例
- oracle中使用触发器实现数据同步
- SQL Server(2008)中通过触发器进行数据同步的设置说明
- 使用sqoop工具进行数据表增量导入
- 两张table数据同步--使用触发器
- rsync 使用:(llinux 和windows 版本数据同步|文件增量备份)
- 针对某个表使用高级复制进行数据同步示例
- 使用 ReplicationConnection 进行 Master/Slave 间数据同步
- oracle使用触发器进行用户部门同步