轉自:https://blog.csdn.net/qq_41704358/article/details/79519133
免費開源的、可視化的、國際上最流行的、功能強大的ETL必備工具: http://www.kettle.net.cn/
場景:将kettle資源庫抽取到另一個資料庫中并輸出抽取表單,(本文用的是MySQL).不廢話直接發
方法一
1.總架構
建立作業
2.擷取表的數量
這步用到表輸入和複制記錄到結果字元串元件,其他可以擷取表的元件也可以自由發揮
3.執行表數量判斷并設定變量,用到JavaScript元件
JAVA代碼如下:
var prevRow=previous_result.getRows();
if (prevRow == null && (prevRow.size()=0))
{
false;
}
else
{
parent_job.setVariable("table_name", prevRow);//ArrayList存儲表名變量
parent_job.setVariable("size", prevRow.size());//存儲執行表的總數量
parent_job.setVariable("i", 0);//循環控制變量
parent_job.setVariable("TABLENAME", prevRow.get(0).getString("TABLE_NAME",""));
true;
}
4.設定變量
這步是設定抽取時間戳的時間變量,本步放在全量抽取裡面也可以每次循環都會調用會影響整體速度.
5.循環控制
這步在作業裡用到檢驗字段的值、轉換和JavaScript元件
JavaScript元件,JAVA代碼如下:
var list_Tables = parent_job.getVariable("table_name").replace("[","").replace(" ","").replace("]","").split(",");
var size = new Number(parent_job.getVariable("size"));
var i = new Number(parent_job.getVariable("i"))+1;
if(i < size)
{
parent_job.setVariable("TABLENAME", list_Tables[i]);
}
parent_job.setVariable("i",i);
true;
轉換設定如下:
元件名稱如上顯示
6.PRINT_TABLES,這個步驟可以省略,本人目的是看看裡面都有那些表.
方法二
1.總架構
建立作業
2.設定變量、擷取表的數量和PRINT_TABLES同上
3.關鍵差别——全量抽取作業元件
勾選執行每一個輸入行?
a.設定表變量
用到從以前的結果擷取記錄和設定變量元件
b.全量抽取同上一個方法
以上兩種方法個人測試感覺第一種快些,希望大家将測試結果寫到評論友善大家使用.
上述兩種方法下載下傳位址:點選打開連結
---------------------
作者:帝輕
來源:CSDN
原文:https://blog.csdn.net/qq_41704358/article/details/79519133
版權聲明:本文為部落客原創文章,轉載請附上博文連結!