kettle循環

1.kettle8官方案例

文件位置:$KETTLE_HOME/samples/jobs/process all tables

包含文件和作用:

流程控制總job

transformation(轉換):Get list of tables as result

組件1:get list of tables

自帶數據庫連接

組件2:Concat Fields

把TABLE_SCHEMA字段和TABLE_NAME拼接成一個字段TABLE_SCHEMA_NAME,分隔符爲英文句號

組件3:tables.txt

查詢出來的表名稱TABLE_NAME輸出到txt

輸出的文件路徑,可以把鼠標移動到上面就會顯示

組件4:Select values

只選擇一個字段TABLE_SCHEMA_NAME並且重命名成tablename

組件5:Copy rows to result

把表名稱複製到結果集上,在下一個transformaton裏面可以使用Get rows from result獲取到結果集

Job(作業):Process a table 

前面一個transformation獲取到5條數據,數據到Process a table 這個job上需要勾選執行每一條數據,這點就是循環的關鍵

transformation(轉換):Define TABLE variable

組件1:get one tablename

組件2:set ${TABLENAME}

transformation(轉換):Get amount of rows from table

組件1:Number of rows in ${TABLENAME}

組件2:rows-${TABLENAME}.txt

查詢到一個結果輸出到一個txt上,文件名爲${java.io.tmpdir}/rows-${TABLENAME}

輸出結果爲:

transformation(轉換):save list of all result files

把輸出的txt合併成一個,該例子有點問題需要修改一下才行,做循環的話這部分可以忽略

 

2.通過job step裏的JavaSrcipt 組件構建循環

這個例子是自己寫的,主要功能連接oracle數據庫時由於網絡原因或者數據庫配置不正確發生 'Connection reset by peer' or 'Connection reset'  的錯誤,嘗試重新連接後正常訪問

相當與循環

for(int i=0;i++){

if(數據庫連接成功)  break;

if(i==5) break;

print("數據庫連接信息")

}

判斷和出口使用javascript腳本,js腳本返回false走紅線,返回true走綠線

這種方式也可以循環便利數組,js中數組的使用方法具體的可以參考官網上的js腳本說明

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章