使用kettle批量下載檔案,kettle批量下載檔案
使用kettle批量下載檔案
最新有項目中需要批量下載檔案並把結果匯入到資料中,通過一些實驗測試,kettle確實可以勝任。問題是關鍵是如果通過http批量下載檔案,本文將詳細說明,假設你已經瞭解了kettle的基本知識,如果需要可以查看我的系列入門教程。
本文的範例程式碼可以在這裡下載.
主作業
kettle的轉換中沒有通過http下載檔案的步驟,但是job的有對應的步驟,所以在主job調用子job(Download.kjb),需要下載的檔案清單通過一個轉換提供。
檔案清單轉換
這裡我僅僅使用資料表步驟提供五條記錄檔案,有兩個欄位分別為“filename”和“url”(url的內容根據你的業務需要,這裡使用一個樣本供測試),為了讓這些資料在download.kjb中可以訪問,後面使用了job類別中“copy rows to result”步驟。
下載的作業
download作業只下載一個單獨的檔案,但是我們需要針對檔案清單中每條記錄都要運行。這裡需要在作業的進階設定,選中“Execute for every input row”,實現迴圈調用。
在http步驟中,我們需要設定filename和url,這兩個欄位內容來自輸入後,我們使用變數${URL}和${FILENAME},為了使這些資料和變數關係對應,我們需要做兩件事情。
1) 需要聲明“URL”和“FILENAME”具名引數
在作業的屬性設定,具名引數選項卡中設定。
2) 選要指定欄位和變數(具名引數)的映射關係
在主作業中雙擊download作業步驟,然後再具名引數選項中配置映射關係。同時在主作業中定義了PATH變數,確定檔案儲存的位置,http步驟中使用該變數確定檔案位置及名稱。
結論
運行完成後,可以在c:\temp目錄中可以成功下載的檔案,如果把檔案的結果讀入到資料庫,就不是難事了。有需要通過其他的文章講解。
我建立了多個kettle指令檔,怎批量執行這些指令碼(若是一個一個的執行,比較麻煩) 指點
for i in $(ls *kettle*); do
source $i
done
有kettle這個軟體怎使用
可以重新啟動kettle.exe檔案或者spoon.bat檔案!在重新啟動前,要刪除兩個檔案,在C:\Documents and Settings\登陸使用者明 目錄下,分別是".kettle"和".pentaho"!這兩個檔案記錄了kettle使用過程中的一些配置資訊!