kettle高級教程-自動同步


kettle高級教程-自動同步

歡迎關注筆者的公眾號: java大師, 每日推送java、kettle運維等領域干貨文章,關注即免費無套路附送 100G 海量學習、面試資源喲!!個人網站: http://www.javaman.cn/kettle/kettle-in-action

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