附:Kettle实战视频教程,需要的朋友可以看看学习下哈~~

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表

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

同时笔者原创了一套视频教程:现免费发放100套,先到先得。获得方法:扫描下方二维码,关注获得

KETTLE4个工作中有用的复杂实例--2、两表数据比较,循环取数据,比较后自动同步(部门、单位数据同步)的更多相关文章

  1. KETTLE4个工作中有用的复杂实例--1、数据定时自动(自动抽取)同步作业

    今天呕心沥血花了8个小时给大家带来kettle工作中最常见的四种复杂实例,90%的项目用到这4种实例都可以解决. 4种实例种还有2种通用kettle工具,使用这两种通用工具实例,可以直接修改相应的配置 ...

  2. Winform中实现ZedGraph滚轮缩放后自动重新加载数据

    场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...

  3. 工作中碰到的js问题(disabled表单元素不能提交到服务器)

    今天碰到一个奇葩的问题,asp页面表单提交后,有一个文本框<input type="text" name="phone" id="phone&q ...

  4. GridView中给DropDownList动态绑定数据,及选择列表值后自动更新数据库

    protected void sgvFile1_RowDataBound(object sender, GridViewRowEventArgs e) { DropDownList ddlAM = ( ...

  5. 工作中遇到的http返回码

    普通常见的200.404.500,工作中遇到的还有206 .302 .304.400.403. 206----服务器返回部分数据 302----请求跳转 304----not modify 服务器内容 ...

  6. git工作中最常用的用法教程,不走命令行

    ·1.1 git的概述 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理.  Git 是 Linus Torvalds 为了帮助管理 Lin ...

  7. MVC5+EF6简单实例---以原有SQLServer数据库两表联合查询为例

    有二三年没写代码了,**内的工作就是这样,容易废人!看到园子里这么多大侠朝气蓬勃的,我想也要学点东西并和大家分享,共同进步!快乐每一天,进步每一天!言归正传! 通过最近一段时间对MVC5.EF6的学习 ...

  8. [Python][flask][flask-login]关于flask-login中各种API使用实例

    本篇博文跟上一篇[Python][flask][flask-wtf]关于flask-wtf中API使用实例教程有莫大的关系. 简介:Flask-Login 为 Flask 提供了用户会话管理.它处理了 ...

  9. web工程迁移---在一个jboss5或jboss6中运行多个实例

    在工作中遇到的,如何在一个jboss中运行多个节点(segment). 我使用的环境是win7.jboss5.jboss6.JDK6 1.jboss5下运行多个实例 第一步不用说,首先要在环境变量中设 ...

  10. C# 工作中遇到的几个问题

    C#  工作中遇到的几个问题 1.将VS2010中的代码编辑器的默认字体“新宋体”改为“微软雅黑”后,代码的注释,很难对齐,特别是用SandCastle Help File Builder生成帮助文档 ...

随机推荐

  1. 物色到的 c# 模拟 http post get 请求 做下笔记

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  2. vue下载本地文件 下载二进制流文件 兼容ie

    vue-cli2要下载的静态文件放在static目录下,vue-cli3则放在public目录下 ie不支持 h5 的download写法,故用以下写法 <el-button type=&quo ...

  3. KB0003.申请和加载DoraCloud的软件许可

    KB0003.申请和加载DoraCloud的软件许可 DoraCloud安装后,默认处于30天试用状态.如果您购买了软件授权,可以申请许可证. 在[系统][License管理][获取License文件 ...

  4. mit6.824lab2D-Debug记录

    1.死锁 要提交快照的时候由于没有人取走applyCh通道里面的东西,导致死锁. 具体解释: 2D的测试代码中在日志达到一定大小时会调用snapshot,该函数需要申请rf.mu这个互斥锁.而在提交普 ...

  5. CentOS7.5上卸载Oracle19c

    最近遇到一个麻烦的事情,由于公司开发的数据库备份容灾系统,对于备份容灾的数据库必须使用LVM(pv.vg.lv),所以之前安装的Oracle19C 必须卸载掉,然后使用空白磁盘通过parted.fdi ...

  6. Python-统计执行时间

    方法一:datetime.datetime.now() import datetime import time starttime = datetime.datetime.now() print(st ...

  7. 函数防抖与节流 - js

    防抖(debounce)和节流(throttle)是在 高频次调用函数 的场景下,常用的解决方案了.故名思意,可以节省开销,优化体验. 二者的区别: 防抖: 我们让想要执行的函数只在最后一次调用完一小 ...

  8. SSD寻址单元IU对寿命的影响——古猫先生存储随笔转载

    SSD寻址单元IU对寿命的影响有多大? 原创 古猫先生 存储随笔 2024-01-30 08:30 发表于浙江 [转载]SSD寻址单元IU对寿命的影响有多大? (qq.com) 随着存储技术的不断进步 ...

  9. Vuex中的核心方法

    Vuex中的核心方法 Vuex是一个专为Vue.js应用程序开发的状态管理模式,其采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.每一个Vuex应用的核心就是 ...

  10. C++ std::move 的一些问题

    看 SO 上有一个比较奇怪的问题, When does an rvalue reference result in a move vs copy constructor and why? 问题代码: ...