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生成帮助文档 ...
随机推荐
- 配置PHP的运行环境
一.wamp Wamp是Windows Apache Mysql PHP的缩写,即在windows下将Apache+PHP+Mysql集成的开发环境,操作简单一键安装,摆脱手动修改配置文件的繁琐. 图 ...
- 【进阶篇】Java 实际开发中积累的几个小技巧(一)
目录 前言 一.枚举类的注解 二.RESTful 接口 三.类属性转换 四.Stream 流 五.判空和断言 5.1判空部分 5.2断言部分 文章小结 前言 笔者目前从事一线 Java 开发今年是第 ...
- ASP.NET Core分布式项目实战(运行Consent Page)--学习笔记
任务21:运行Consent Page 修改 Config.cs 中的 RequireConsent 为 true,这样登录的时候就会跳转到 Consent 页面 修改 ConsentControll ...
- Pandas字符串离散化处理
字符串离散化处理 import pandas as pd import numpy as np from matplotlib import pyplot as plt # 读取csv文件 file_ ...
- CF1822F Gardening Friends
题目链接 题解 知识点:树的直径,枚举. 考虑一个结论:树上任意点的最远点一定是树的直径的端点. 那么对于一个根节点,只要知道了树的直径,那么我们就可以立即得到最远距离,即乘 \(k\) 树的价值. ...
- NC24755 [USACO 2010 Dec S]Apple Delivery
题目链接 题目 题目描述 Bessie has two crisp red apples to deliver to two of her friends in the herd. Of course ...
- 虚拟机ubuntu配置静态IP
手头搭建了几天虚拟机ubuntu用来做微服务环境的搭建,目前使用的是DHCP分配的网络,每次启动各台服务器的ip都是随机的 管理起来有点乱,所以就要把他们配置成静态的ip.具体操作步骤如下: 我直接用 ...
- redis7源码分析:redis 启动流程
1. redis 由 server.c 的main函数启动 int main(int argc, char **argv) { ... // 上面的部分为读取配置和启动命令参数解析,看到这一行下面为启 ...
- 彻底搞懂Java中的Runnable和Thread
写在前面 今天在阅读ThreadPoolExecutor源码的时候觉得有些地方理解起来似是而非,很别扭!最后才猛然发现,原来是我自己的问题:没有真正理解Runnable和Thread的含义! 我之前对 ...
- [超实用插件]在Visual Studio中查看EF Core查询计划
前言 EF Core是我们.NET开发中比较常用的一款ORM框架,今天我们分享一款可以直接在Visual Studio中查看EF Core查询计划调试器可视化工具(帮助开发者分析和优化数据库查询性能) ...