kettle系列之二 工具使用
初始化
設定語言
第一步,可選,把工具設定顯示英文。
工具-選項-觀感
介面簡介
只做簡單解釋,後續做專案會慢慢用到一些其中的外掛
簡單的資料庫交換例子
需求:每天定時從A庫的X表獲取資料,搬到B庫的X表,表結構一致
grid_code欄位要求去掉短橫線
新建作業
快捷鍵CTRL+ALT+N
模型:
步驟:
開始和結束外掛是必須的
獲取當前系統日期,儲存結果到記錄集
取出記錄集,替換佔位符(SQL查詢),獲取資料,搬遷到目標表
新建轉換
獲取日期
快捷鍵CTRL+N
獲取系統當前日期
格式化日期格式
複製資料
從結果獲取記錄
表輸入
格式化字串,去掉grid_code的短橫線
輸出到目標表,注意選目標表
執行
就可以檢視執行結果
可以檢視效能監控圖
一些問題
結果集和變數的區別?
結果集主要用於替換佔位符
變數主要用於替換某些不能使用佔位符的情況,特別注意的是,如果在A轉換裡面設定了變數,是不能在A轉換中使用,必須在下一個轉換或者作業環節才能使用,而且,變數是有作用域範圍的,需要根據實際需要指定好
參考:多表複製的例子
表輸出的時候,表名無法使用佔位符實現
每個結果集執行一次Job
應用場景,當需要用到同步多個表資料的時候,可以採用單個作業,多次迴圈的方式,但是需要設定子作業或者轉換為每個輸入結果執行一次。
分批執行,分頁採集資料
在資料庫輸入和輸出的過程中,可以設定每次提交的數量,因為表輸入一般都是直接把整個資料庫表的資料load進記憶體,再處理輸出到目標資料庫,在資料量較大的情況下,需要分批提交
作業示例
設定變數
設定分頁數
獲取分頁總數之後,設定步進序列
子作業,開始複製表資料
設定開始變數
開始複製資料
為什麼分批執行使用變數,而不使用JS迴圈
在第一次搜尋資料的時候,使用的就是JS迴圈,但是在大資料量的時候,kettle每次都記憶體溢位
而且很明顯這是一個固有的問題,PDI不使用JS迴圈
在資料量小的時候,還是可以使用的,但是不建議
主作業:
設定變數
判斷
判斷成立,進入資料複製步驟
計數加1
支援事務嗎?
開源的社群版本只有轉換支援事務,作業不支援事務
配置方法,每隔50000條作為一次事務,如果在15w的時候失敗,那麼前面10w資料是成功提交的。
優化?
十六、使用kettle時必須要注意並且做到的幾個要點
支援遠端執行?
放在叢集的單元說
怎麼記錄執行日誌?
在下一章節,資料庫資源庫裡面解釋