kettle從入門到精通 第六十五課 ETL之kettle 執行動態SQL語句,輕鬆實現全量&增量資料同步

慕容尘轩發表於2024-06-04

本次課程的邏輯是同步t1表資料到t2表,t1和t2表的表機構相同,都有id,name,createtime三個欄位。

CREATE TABLE `t1` (
   `id` bigint NOT NULL AUTO_INCREMENT,
   `name` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL,
   `createtime` datetime DEFAULT NULL,
   PRIMARY KEY (`id`)
 ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci

1、之前的課程有介紹過單個轉換的全量和增量資料同步,今天我們一起學習下透過trans來實現將增量和全量合二為一。這裡面重點用到了執行Dynamic SQL步驟,如下圖所示:

2、查詢目標表t2中的表記錄總條數,若總條數為0表示沒有進行同步過,需要進行全量同步,否則進行增量同步。這裡增量同步的邏輯是透過兩個表的id進行比對,當然也可以透過業務時間欄位進行比對。

3、使用javascript指令碼步驟動態構建sql語句,根據maxId值進行編寫邏輯,如下圖所示:

4、使用執行Dynamic SQL步驟執行前面構建的sql語句。

1)SQL field name:動態sql語句欄位。

2)Template SQL:我個人理解就是欄位設定別名方便步驟後續使用。

5、表輸出步驟將資料寫入t2表。

相關文章