kettle 先删除后插入_Kettle:使用触发器和快照表进行增量数据同步

主库为Oracle 11g数据库,针对需要同步的表建立增量数据临时表以及反向并通过水壶定时同步到PostgreSQL数据库
。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_TRIAFTER INSERTON SPWUSER.WEB_CUSTOMERFOR EACH ROW
BEGININSERT 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_TRIAFTER DELETEON SPWUSER.WEB_CUSTOMERFOR EACH ROW
BEGININSERT 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_TRIAFTER UPDATEON SPWUSER.WEB_CUSTOMERFOR EACH ROW
BEGININSERT INTO WEB_CUSTOMER_UPDATE_TMP (ID,NAME,CREATED,MODIFIED)VALUES (:old.ID,:old.NAME,:old.created,:old.modified);
END;
/

2,创建一个针对表增删改改的转换
从kettle菜单中依次选择“文件”->“新建”->“转换”或按ctrl + N快捷键创建。然后依次选择“输入”->“表输入”,“输出”->“插入/更新”和“输出”->“删除”,执行三次,如下图所示:

26a98036ad37d76a6e083faee1181fe8.png

3,“表输入”控件,查询主库(Oracle)的快照表

c33d4ebabc99b346768d53dd7b801c3a.png

06bae24ee05eae48f57fa04706bd3de4.png

84652caebdf1fba435ea69725ff1e6ab.png

4,“插入/更新”控件,插入数据到从库(PostgreSQL)的表,查询的关键字要求唯一

1507b526a5788e29c7e3969bf5297b66.png

0e2fa48c11d8ce9dd57fcd7974cbe397.png

841fb5fce3f8f5f302c90b308ddd0707.png

5,“删除”控件,将主库的快照表中的数据删除

79151d6a36d18e1babe847f4e45c1285.png

5095a4328b41b324a4f89b911a306c67.png

d5224bf577fa57e57886f7249dc8fc20.png

6,新建“作业”控件
新建作业控件,将三个转换引用起来,总览如下图所示:

78c648a4663052aecc14f8199be35fec.png

插入转换:

078bdacae6a75d12595f073fdebcb129.png

更新转换:

9c579702349e13746f57bc68bab30deb.png

删除转换:

8485ca9783c8b602ad4569d97a323aa8.png

发送邮件:

1f6dc792bfcb0bf1ac2bf969319da0b5.png

885b5e69d183fbda955b1f7563be0fd9.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/556351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

c 语言中fgetc函数,C 库函数 - fgetc()

描述C 库函数 int fgetc(FILE *stream) 从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动。声明下面是 fgetc() 函数的声明。int fgetc(FILE *stream)参数stream -- 这是指向 FILE 对象的指针,该 FILE 对象标识了要在上面执行操…

SpringBoot中使用Shiro和JWT做认证和鉴权

最近新做的项目中使用了shiro和jwt来做简单的权限验证,在和springboot集成的过程中碰到了不少坑。做完之后对shiro的体系架构了解的也差不多了,现在把中间需要注意的点放出来,给大家做个参考。 相对于spring security来说,shiro出…

python 数字大小排序_python list字符按数字大小排序

python list字符按数字大小排序在把list写到csv过程中,遇到一个list的排序问题,list中存放的是数字字符,需要按数字大小来排序测试源码testList [1, 5, 2, 10, 50, 21, 31, 3, 7]print(testList{}.format(testList))normalSortList testLis…

android 手机wifi重启,路由器要不要每天重启?多亏宽带师傅透露,难怪网速一天比一天慢!...

没WiFi,不成活!手机和WiFi之间,就像空调加棉被,谁也离不开谁。图片来源于网络如今WiFi已经填满了我们生活的每个角落,很难想象,如果哪天没了网,世界会变成什么样!可是家里的WiFi是越…

windows和linux系统下测试端口连通性的命令

文章目录1. ping2. telnet3. ssh4. curl5. wget6. tcping总结1. ping ping命令只能测试某个IP通不通,不能测试某端口的连通性。因为ping命令是基于ICMP协议,是计算机网络中的网络层的协议,但是想要测试某个的连通性,需要用传输层…

python写windows程序_【Python学习】Python 写Windows Service服务程序

如下遇到自己编写的服务无法启动需要添加环境变量(标红的)C:\Python27\Scripts;C:\Python27\;C:\Python27\chromedriver.exe;C:\Python27\Lib\site-packages\win32;C:\Python27\Lib\site-packages\pywin32_system32;1.需求为什么要开发一个windows服务呢?之前做一个…

关于Apache Commons-Lang3的使用

关于Apache Commons-Lang3的使用 在日常工作中,我们经常要使用到一些开源工具包,比如String,Date等等。有时候我们并不清楚有这些工具类的存在,造成在开发过程中重新实现导致时间浪费,且开发的代码质量不佳。而apache…

linux 查看ip_如何在 Linux 中查看可用的网络接口 | Linux 中国

对于某些人来说,他们更偏爱在安装完系统后再进行网络的配置或者更改现存的设置。众所周知,为了在命令行中进行网络设定的配置,我们首先必须知道系统中有多少个可用的网络接口。-- Sk在我们安装完一个 Linux 系统后最为常见的任务便是网络配置…

SpringBoot的整合————一些常用工具类依赖及用法总结

文章目录概述:(1)Hutool(2)fastjson(3)commons-lang3(4)poi概述: 为了简化我们的开发代码,我们常常在pom.xml文件中引入一些工具类的依赖来方便我们的开发,本…

android有关医疗实现功能,基于Android的智能医疗监测系统的设计与实现_问答库

随着社会经济的快速发展,工作压力的进一步加大,如今人们对个人健康越来越关注,为了有效减轻家庭医疗支出同时,让人们足不出户就能享受到自身健康检测的高质量医疗服务,智能医疗监测系统成为关注的焦点。另一方面&#…

python教程下载百度云盘到手机_Python教程百度云盘哪里找

原标题:Python教程百度云盘哪里找Python是一门使用非常简单的编程语言,可以轻松应用于各种应用程序的开发。它的动态类型有助于代码简化和组合,是许多平台的解释性语言,成为众多程序员编程首选的便携式选项。也许,某天…

实现springboot的starter

什么是 Spring Boot Spring Boot 基本上是 Spring 框架的扩展,它消除了设置 Spring 应用程序所需的复杂例行配置。我们在使用 Spring 框架的时候,我们接触得比较多的应该是 Spring MVC、 IOC 、 DI 、AOP 等等,而这些框架在使用的过程中会需…

android多点触摸手势,安卓手势学习笔记(三) 多点触控

8种机械键盘轴体对比本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?跟踪多个触点当多个手指同时触碰屏幕时,系统产生如下的事件:ACTION_DOWN –第一个触点。它启动了手势,在MotionEvent中该触点的…

如何用python编程制作出表格_使用Python轻松制作漂亮的表格

原标题:使用Python轻松制作漂亮的表格转自:https://www.linuxmi.comPython太有用而且很方便图表可以用matplotlib轻松制作,数值计算只要有numpy就行。最近,Python被广泛用于机器学习系统的研究,甚至还能制作游戏。我突…

SpringBoot 自动配置实现流程

(1)SpringBoot启动的时候加载主配置类,开启了自动配置功能EnableAutoConfiguration。查看SpringBootApplication (2)查看EnableAutoConfiguration,其作用是利用AutoConfigurationImportSelector给容器中导入…

python如何运行源文件_Python如何运行

Python是一种解释型语言,在执行Python的时,解释器将源代码source code翻译成字节码byte code,然后byte code交给Python虚拟机PVM去执行,整个流程如下图所示:byte code1 字节码翻译Python解释器并不是每次都会将源代码source code翻…

spring.factories 的妙用

现象 在阅读 Spring-Boot 相关源码时,常常见到 spring.factories 文件,里面写了自动配置(AutoConfiguration)相关的类名,因此产生了一个疑问:“明明自动配置的类已经打上了 Configuration 的注解&#xff0…

学习android 画板源代码,Android实现画画板案例

郑州app开发画画板案例。布局代码是三个button和一个imagesview下面是图片。布局代码就不展示了。下面是java代码。package cn.xhhkj.image;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.graphics.Bitmap;import android.gr…

apache 部署python3_centos7.6+python3+apache2.4+django2.1.2网站部署总结

本次网站部署是使用了django2.1.2版本部署,由于centos自带的Python2.7不支持django2.0以上版本,故需要安全python3的环境。python3、apache的安装不做具体介绍,网上有很多方法,不做具体介绍,重点针对本次部署过程中遇到…

android 仿微信朋友圈 评论,2020年android 仿微信朋友圈 评论

2020年android 仿微信朋友圈 评论1.如果有人问我:那些艰难的岁月你是怎么熬过来的?我想我只有一句话回答:我有一种强大的精神力量支撑着我,这种力量名字叫“想死又不敢”二十、我喜欢转身转得漂亮,放手放得潇洒你在玩以这样的挂念,会悲伤的逃脱11、我嫉…