KETTLE4個工作中有用的復雜實例--2、兩表數據比較,循環取數據,比較后自動同步(部門、單位數據同步)


附: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套,先到先得。獲得方法:掃描下方二維碼,關注獲得

img


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM