2015-02-06 83 views
1

我已閱讀博客和one question close to mine,但尚未找到解決我的問題的方法。我有一個轉換作業設置,從84個DB中提取三個表格以生成一個報告。我的問題是當數據庫連接不可用時,整個作業停止。Pentaho Kettle-運行檢查db連接而不停止作業

我希望能夠在初始化作業之前檢查數據庫連接,爲不可訪問的數據庫記錄錯誤並創建一個新的動態成功測試列表,然後我將運行我的作業。我使用了檢查數據庫連接步驟,但當連接爲false時,它仍然停頓。如何處理我的數據庫列表,直到最後運行,而不中止作業?

回答

1

首先,您絕對使用正確的步驟來檢查數據庫連接。現在對於你的問題,我會嘗試在部分解釋(希望我是正確的):

案例一:「我的問題是,當一個數據庫連接不可用,整個作業停止」

這情況很明顯。每當某個步驟發現任何錯誤時,它就會拋出異常並停止Job的整個執行。

但是,這是否意味着如果連接出錯,步驟「檢查Db連接」將停止檢查數據庫連接。答案是NO。該步驟將完成測試所有連接,即使它在中間連接中出現錯誤。試着仔細觀察日誌,它會給你所有的檢查DB連接的最終彙總列表(查看下圖)

enter image description here

我試着用4個DB連接測試外面我得到了一個錯誤和三個成功。

現在爲「整個工作停止」部分:由於停車的行爲是明顯的(如我所提到的),你可以做的是通過使用「錯誤跳」,使流動如果作業發現錯誤,它將採用錯誤跳躍。 檢查圖像下方

enter image description here

在這裏,我已經使用兩級跳:一個成功和有一個錯誤。如果作業失敗,則將採用錯誤路徑(紅色着色跳躍),否則將採用成功路徑(綠色跳躍)

案例二:「錯誤記錄爲不可訪問DB和創造的成功測試一種新的動態列表」

您可以登錄錯誤到一個單獨的日誌文件或表(取決於您的要求),然後通讀日誌以生成數據庫連接列表。檢查圖像下面:

enter image description here

輸出與錯誤標誌一起生成的連接的列表。

Y : Failure in connecting to Database 
N : successful connection 

注:我已經使用文本文件的輸入,因爲我已經登錄上一步驟到一個文本文件,而不是數據庫。您可以根據您的需求進行自定義。

我已將示例代碼放入gist。你可以檢查你的參考。

希望它有幫助:)

+0

感謝您的詳細解釋Rishu,這就是我所缺少的。這太棒了!我沒有在DBconnections步驟中使用錯誤檢查。現在工作很好! – Patrick 2015-02-09 15:23:15

+0

歡迎@帕特里克:)高興地幫助! – Rishu 2015-02-09 17:07:00