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