KETTLE4个工作中有用的复杂实例--2、两表数据比较,比较后自动同步(部门、单位数据同步)

二、两表数据比较核对,核对后自动同步至目标数据表

目标:比较t_bm表的数据和t_bm_target表的数据,以t_bm表为准,往t_bm_target中进行数据的自动同步;

1、为了给大家更直观的展示,【大喇叭玩转数据库】首先在数据库创建2张表,表结构如下:

  • t_bm 部门单位表;
  • t_bm_target 部门单位目标表;
 1 -- Create table
2 create table T_BM
3 (
4 organize_code VARCHAR2(200), --单位代码
5 organize_name VARCHAR2(200), --单位名称
6 cjsj DATE --创建时间
7 )
8 tablespace ZFQLC
9 pctfree 10
10 initrans 1
11 maxtrans 255
12 storage
13 (
14 initial 64K
15 next 1M
16 minextents 1
17 maxextents unlimited
18 );
 1 -- Create table
2 create table T_BM_TARGET
3 (
4 organize_code VARCHAR2(200), --单位代码
5 organize_name VARCHAR2(200), --单位名称
6 cjsj DATE --创建时间
7 )
8 tablespace ZFQLC
9 pctfree 10
10 initrans 1
11 maxtrans 255
12 storage
13 (
14 initial 64K
15 next 1M
16 minextents 1
17 maxextents unlimited
18 );

其中t_bm(单位表)的数据如下图:

t_bm_target(单位目标表)的数据如下图:

2、作业整体流程:

需要用到1个作业和4个转换来操作2张表。

下图为整个作业的流程:

上面流程图就是整个作业的流程,用到了3个转换和2个JS脚本,来实现该需求。

3、获取机构信息数据

3.1获取源数据如下图,sql语句必须要按照机构代码进行排序

3.2获取源数据如下图,sql语句必须要按照机构代码进行排序

3.3 将3.1和3.2的步骤通过hops连线,连接记录集连接控件

选择步骤1和步骤2,连接类型left outer,以步骤1的源表数据为基础创建连接,连接字段选择organize_code字段。

3.4 设置条件过滤,如果organize_code为空的话,则什么都不做,不为空的话,放入数据流中

3.5 字段选择,将不为空的数据放到字段选择中,并复制记录到结果,供下一个转换步骤使用

3.6 JavaScript脚本验证,获取数据并设置到变量中

3.7 检验字段的值,获取数据并设置到变量中

3.8 计数器累加,获取i中的变量,并将结果放入detail明细中

3.9 机构同步处理流程

3.9.1 机构同步处理-获取数据,将上个步骤的detail数据放入变量中

3.9.2 sql脚本 执行插入t_bm_target表

 注意:因某些限制,最新源代码和后续通用配置实现数据抽取 已放置在笔者公众号上,请关注微信公众号: 大喇叭学数据库, 回复关键字:【实例】,获取kettle安装程序和运行实例(表结构和kjb、ktr文件)


3.10 执行结果

kettle高级教程-自动同步的更多相关文章

  1. Siki_Unity_2-9_C#高级教程(未完)

    Unity 2-9 C#高级教程 任务1:字符串和正则表达式任务1-1&1-2:字符串类string System.String类(string为别名) 注:string创建的字符串是不可变的 ...

  2. 【读书笔记】.Net并行编程高级教程(二)-- 任务并行

    前面一篇提到例子都是数据并行,但这并不是并行化的唯一形式,在.Net4之前,必须要创建多个线程或者线程池来利用多核技术.现在只需要使用新的Task实例就可以通过更简单的代码解决命令式任务并行问题. 1 ...

  3. Java高级之线程同步

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 关于实现多线程的意义,"从业四年看并发"一文已经讲述,而本篇主要讲一下常用的设计 ...

  4. 利用svn自动同步更新到网站服务器 -- 网摘

    首先在服务器上安装VisualSVN Server ,根据提示选好安装的路径,一路确定.安装好后运行VisualSVN Server ,在Repositories上点击右键,选择create New ...

  5. 项目管理实践【六】自动同步数据库【Using Visual Studio with Source Control System to synchronize database automatically】

    在上一篇项目管理实践[五]自动编译和发布网站中,我们讲解了如何使用MSBuild+Robocopy+WebDeployment来自动编译和部署网站,今天,我们来看一下,如何使用MSBuild +SVN ...

  6. mysql安装简单教程(自动安装/配置安装)

    mysql安装简单教程(自动安装/配置安装) 1.1前言: 由于特殊原因,在最近2-3个月里mysql真是安装了无数遍,每次安装都要上网找教程,每个教程基本都不一样,因此还是自己写下来比较好,毕竟自己 ...

  7. [转帖]tar高级教程:增量备份、定时备份、网络备份

    tar高级教程:增量备份.定时备份.网络备份 作者: lesca 分类: Tutorials, Ubuntu 发布时间: 2012-03-01 11:42 ė浏览 27,065 次 61条评论 一.概 ...

  8. CentOS集群自动同步时间的一种方法

    CentOS集群自动同步时间的一种方法 之前有篇日志是手动同步时间的 http://www.ahlinux.com/os/201304/202456.html 之所以这么干,是因为我们实验室的局域网只 ...

  9. mysql单向自动同步

    mysql自动同步 以下教程均使用mysql自带的自动同步功能 全库单向自动同步 本例把192.168.3.45上名称为ewater_main的数据库自动同步到192.168.3.68的ewater_ ...

随机推荐

  1. 正则 ?<= 和 ?= 用法 以及零宽断言等概念

    正则 ?<=  和 ?= 用法   参考网址:http://baike.baidu.com/link?url=2zORJF9GOjU8AkmuHDLz9cyl9yiL68PdW3frayzLwW ...

  2. Windows系统下三十款优秀开源软件

    Windows系统下三十款优秀开源软件 1.Firefox 官方网站:http://www.getfirefox.com/ 可替换Internet Explorer 功能特点:如果你还没有使用Fire ...

  3. input标签前台实现文件上传

    值得注意的是:当一个表单里面包含这个上传元素的时候,表单的enctype必须指定为multipart/form-data,method必须指定为post,浏览器才会认识并正确执行.但是还有一点,浏览器 ...

  4. WebStorm使用参考手册

    WebStorm 是 JetBrains 推出的一款商业的 JavaScript 开发工具 任何一个编辑器都需要保存(ctrl + s),这是所有win平台上编辑类软件的特点,但是webstorm编辑 ...

  5. js实现div的碰壁反弹效果

    文章地址 https://www.cnblogs.com/sandraryan/ 需求: 写一个div,让div在父级进行匀速运动,碰到父级上下左右的边框,就向反方向运动. 碰壁反弹在游戏制作中很常用 ...

  6. C#循环语句练习(二)

    1.求1!+2!+...+n! 所有阶乘的和 2.求100以内的质数 (1)第一种做法 (2)另一种做法 3. 总数=幼兔+小兔+成兔成兔=上个月的小兔+上个月的成兔小兔=上个月的幼兔幼兔=这个月的成 ...

  7. NLP --- 条件随机场CRF详解 重点 特征函数 转移矩阵

    上一节我们介绍了CRF的背景,本节开始进入CRF的正式的定义,简单来说条件随机场就是定义在隐马尔科夫过程的无向图模型,外加可观测符号X,这个X是整个可观测向量.而我们前面学习的HMM算法,默认可观测符 ...

  8. 2019-9-2-给博客添加rss订阅

    title author date CreateTime categories 给博客添加rss订阅 lindexi 2019-09-02 12:57:38 +0800 2018-2-13 17:23 ...

  9. P1105 数列

    题目描述 给定一个正整数 \(k(2 \le k \le 15)\) ,把所有k的方幂及所有有限个互不相等的k的方幂之和构成一个递增的序列,例如,当 \(k = 3\) 时,这个序列是: 1,3,4, ...

  10. 2018-3-31-C#-谁改了我的代码

    title author date CreateTime categories C# 谁改了我的代码 lindexi 2018-3-31 21:15:3 +0800 2018-2-13 17:23:3 ...