KETTLE4个工作中有用的复杂实例--2、两表数据比较,循环取数据,比较后自动同步(部门、单位数据同步)
附:Kettle实战视频教程,需要的朋友可以看看学习下哈~~
- kettle实战第一讲-文件和数据库表的互相转换处理_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第二讲-数据库单表的全量同步_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第三讲-数据库单表的增量同步_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第四讲-同步错误原因记录到数据库日志表_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第五讲-多个数据库表融合到一个数据库业务表_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第六讲-比较不同的数据库表进行数据的一致性处理_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第七讲-通过配置文件做表的全量同步,一个作业统统搞定_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第八讲-通过配置文件做数据表的增量同步,一个作业统统搞定_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第九讲-通过配置文件做表的全量同步_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第十讲-windows下的kettle作业调度_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
- kettle实战第十一讲-Linux下的kettle作业调度_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili
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、两表数据比较,循环取数据,比较后自动同步(部门、单位数据同步)的更多相关文章
- KETTLE4个工作中有用的复杂实例--1、数据定时自动(自动抽取)同步作业
今天呕心沥血花了8个小时给大家带来kettle工作中最常见的四种复杂实例,90%的项目用到这4种实例都可以解决. 4种实例种还有2种通用kettle工具,使用这两种通用工具实例,可以直接修改相应的配置 ...
- Winform中实现ZedGraph滚轮缩放后自动重新加载数据
场景 Winforn中设置ZedGraph曲线图的属性.坐标轴属性.刻度属性: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10 ...
- 工作中碰到的js问题(disabled表单元素不能提交到服务器)
今天碰到一个奇葩的问题,asp页面表单提交后,有一个文本框<input type="text" name="phone" id="phone&q ...
- GridView中给DropDownList动态绑定数据,及选择列表值后自动更新数据库
protected void sgvFile1_RowDataBound(object sender, GridViewRowEventArgs e) { DropDownList ddlAM = ( ...
- 工作中遇到的http返回码
普通常见的200.404.500,工作中遇到的还有206 .302 .304.400.403. 206----服务器返回部分数据 302----请求跳转 304----not modify 服务器内容 ...
- git工作中最常用的用法教程,不走命令行
·1.1 git的概述 Git(读音为/gɪt/.)是一个开源的分布式版本控制系统,可以有效.高速的处理从很小到非常大的项目版本管理. Git 是 Linus Torvalds 为了帮助管理 Lin ...
- MVC5+EF6简单实例---以原有SQLServer数据库两表联合查询为例
有二三年没写代码了,**内的工作就是这样,容易废人!看到园子里这么多大侠朝气蓬勃的,我想也要学点东西并和大家分享,共同进步!快乐每一天,进步每一天!言归正传! 通过最近一段时间对MVC5.EF6的学习 ...
- [Python][flask][flask-login]关于flask-login中各种API使用实例
本篇博文跟上一篇[Python][flask][flask-wtf]关于flask-wtf中API使用实例教程有莫大的关系. 简介:Flask-Login 为 Flask 提供了用户会话管理.它处理了 ...
- web工程迁移---在一个jboss5或jboss6中运行多个实例
在工作中遇到的,如何在一个jboss中运行多个节点(segment). 我使用的环境是win7.jboss5.jboss6.JDK6 1.jboss5下运行多个实例 第一步不用说,首先要在环境变量中设 ...
- C# 工作中遇到的几个问题
C# 工作中遇到的几个问题 1.将VS2010中的代码编辑器的默认字体“新宋体”改为“微软雅黑”后,代码的注释,很难对齐,特别是用SandCastle Help File Builder生成帮助文档 ...
随机推荐
- 物色到的 c# 模拟 http post get 请求 做下笔记
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...
- vue下载本地文件 下载二进制流文件 兼容ie
vue-cli2要下载的静态文件放在static目录下,vue-cli3则放在public目录下 ie不支持 h5 的download写法,故用以下写法 <el-button type=&quo ...
- KB0003.申请和加载DoraCloud的软件许可
KB0003.申请和加载DoraCloud的软件许可 DoraCloud安装后,默认处于30天试用状态.如果您购买了软件授权,可以申请许可证. 在[系统][License管理][获取License文件 ...
- mit6.824lab2D-Debug记录
1.死锁 要提交快照的时候由于没有人取走applyCh通道里面的东西,导致死锁. 具体解释: 2D的测试代码中在日志达到一定大小时会调用snapshot,该函数需要申请rf.mu这个互斥锁.而在提交普 ...
- CentOS7.5上卸载Oracle19c
最近遇到一个麻烦的事情,由于公司开发的数据库备份容灾系统,对于备份容灾的数据库必须使用LVM(pv.vg.lv),所以之前安装的Oracle19C 必须卸载掉,然后使用空白磁盘通过parted.fdi ...
- Python-统计执行时间
方法一:datetime.datetime.now() import datetime import time starttime = datetime.datetime.now() print(st ...
- 函数防抖与节流 - js
防抖(debounce)和节流(throttle)是在 高频次调用函数 的场景下,常用的解决方案了.故名思意,可以节省开销,优化体验. 二者的区别: 防抖: 我们让想要执行的函数只在最后一次调用完一小 ...
- SSD寻址单元IU对寿命的影响——古猫先生存储随笔转载
SSD寻址单元IU对寿命的影响有多大? 原创 古猫先生 存储随笔 2024-01-30 08:30 发表于浙江 [转载]SSD寻址单元IU对寿命的影响有多大? (qq.com) 随着存储技术的不断进步 ...
- Vuex中的核心方法
Vuex中的核心方法 Vuex是一个专为Vue.js应用程序开发的状态管理模式,其采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化.每一个Vuex应用的核心就是 ...
- C++ std::move 的一些问题
看 SO 上有一个比较奇怪的问题, When does an rvalue reference result in a move vs copy constructor and why? 问题代码: ...