一.Kettle初步使用
雙擊Spoon.bat即可啟動,然后點擊“文件”或右鍵“轉換”,均可新建轉換
(圖1)
新建轉換后需要連接數據庫。①點擊主對象樹;②右鍵“DB連接”——新建;③選擇數據庫(本人為MySQL),Oracle同理;④選擇連接方式;⑤設置數據庫連接(別忘了第一行“連接名稱”:隨便取個名);⑥點擊“測試”,成功or失敗;⑦成功后右下角確認即可,然后“DB連接”下面就有該連接了,右鍵連接可設置為共享(下次新建連接就可以直接用)
(圖2)
點擊核心對象,可以看到很多功能,反正大部分我都不會用(苦笑臉!)所以下面只演示表的插入/更新/同步。。。。。
實現數據的插入/更新:①user表:②user_age表:③目的:將user表中的增量/更新數據同步到user_age表。
點擊“輸入”,然后將“表輸入”直接拖拽到右邊的工作框;雙擊表輸入然后依次步驟取名——選擇下之前創建的連接——再寫sql,獲取你要的數據(我這里是獲取user表所有數據)
點擊“輸出”,直接將“插入/更新”拖拽到右邊的工作框,同樣取個名——選擇數據庫連接——目標表選擇你需要插入/更新的表——目標表與源數據表(流)的對應關系(此處即user_age表的user_id與user表的id,可理解為外鍵關系,spoon通過比較這兩個字段來同步數據)——數據同步的對應關系(記住更新下面選擇Y,不需要同步選擇N)
Shift健按住,左鍵點擊表即可延伸箭頭,創建轉換。點擊運行,會提示保存轉換(工作數據建議保存到固定文件夾,方便后續查看/使用),保存后即可運行。每個步驟上都出現綠色的“√”表示運行成功,可查看目標表數據是否同步,若出現紅色警告則說明該步驟運行失敗。
上述轉換實際存在缺陷:只能在目標表中同步源表的插入/更新的數據,而源表刪除的數據,目標表不會刪除,即並沒完全同步(目標表和源表完全一致)。若需要完全同步,可使用“數據同步”輸出。
二.Kettle數據同步
直接上轉換圖。目的:將user表的數據完全同步到目標表(兩表保持完全一致)
拖拽兩個表輸入,配置如圖,因為要合並記錄(實際是對兩張表數據進行比較),所以獲取SQL獲取數據/字段等要一致。
合並記錄,連接中拖拽出“合並記錄”
合並記錄配置:
①一定要注意舊數據源和新數據源的區別,
舊數據源指:需要同步的目標表,user_age表(可理解為備份表);
新數據源值:源數據,user表(可理解為業務中一直變動的表);
②標志字段:flagfield后面“數據同步”步驟需要用到,Spoon用它記錄數據的“增 刪 改”狀態,才能執行同步
③關鍵字段,兩張表數據用來對比的字段(此處user_id);
④同步的數據字段。
輸出中拖拽出“數據同步”,配置如下:
————————————————
版權聲明:本文為CSDN博主「半個蘿卜」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_40827989/article/details/81121303