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腳本說明