天天看點

kettle中定義錯誤處理 在kettle執行的過程中,如果遇到錯誤,kettle會停止運作。在某些時候,并不希望kettle停止運作,這時候可以使用錯誤處理(Step Error Handling)。錯誤處理允許你配置一個步驟來取代出現錯誤時停止運作一個轉換,出現錯誤的記錄行将會傳遞給另一個步驟。在Step error handling settings對話框裡,需要設定啟用錯誤處理。

下面例子中讀取postgres資料庫中的a0表資料,然後輸出到a1表:

kettle中定義錯誤處理 在kettle執行的過程中,如果遇到錯誤,kettle會停止運作。在某些時候,并不希望kettle停止運作,這時候可以使用錯誤處理(Step Error Handling)。錯誤處理允許你配置一個步驟來取代出現錯誤時停止運作一個轉換,出現錯誤的記錄行将會傳遞給另一個步驟。在Step error handling settings對話框裡,需要設定啟用錯誤處理。

a1表結構如下:

從表結構可以看出,a1表中id為主鍵、唯一。

a0表資料預覽:

kettle中定義錯誤處理 在kettle執行的過程中,如果遇到錯誤,kettle會停止運作。在某些時候,并不希望kettle停止運作,這時候可以使用錯誤處理(Step Error Handling)。錯誤處理允許你配置一個步驟來取代出現錯誤時停止運作一個轉換,出現錯誤的記錄行将會傳遞給另一個步驟。在Step error handling settings對話框裡,需要設定啟用錯誤處理。

現在a1表資料為空,執行上面的轉換,執行成功之後,a1表資料和a0表資料一緻。 再次執行,上面的轉換會報錯,程式停止運作,會報主鍵重複的異常。

現在,我想報錯之後,程式繼續往下執行,并記錄錯誤的記錄的相關資訊,這時候可以使用“定義錯誤處理”的功能。 在“表輸出”的步驟上右鍵選擇“定義錯誤處理”,彈出如下對話框。

kettle中定義錯誤處理 在kettle執行的過程中,如果遇到錯誤,kettle會停止運作。在某些時候,并不希望kettle停止運作,這時候可以使用錯誤處理(Step Error Handling)。錯誤處理允許你配置一個步驟來取代出現錯誤時停止運作一個轉換,出現錯誤的記錄行将會傳遞給另一個步驟。在Step error handling settings對話框裡,需要設定啟用錯誤處理。

相關字段說明:

目标步驟:指定處理錯誤的步驟

啟用錯誤處理?:設定是否啟用錯誤處理

錯誤數列名:出錯的記錄個數

錯誤描述列名:描述錯誤資訊的列名稱

錯誤列的列名:出錯列的名稱

錯誤編碼列名:描述錯誤的代碼的列名

允許的最大錯誤數:允許的最大錯誤數,超過此數,不在處理錯誤

允許的最大錯誤百分比:

在計算百分百前最少要讀入的行數:

添加錯誤處理後的轉換如下:

kettle中定義錯誤處理 在kettle執行的過程中,如果遇到錯誤,kettle會停止運作。在某些時候,并不希望kettle停止運作,這時候可以使用錯誤處理(Step Error Handling)。錯誤處理允許你配置一個步驟來取代出現錯誤時停止運作一個轉換,出現錯誤的記錄行将會傳遞給另一個步驟。在Step error handling settings對話框裡,需要設定啟用錯誤處理。

記錄錯誤資訊的字段清單如下,可以看出,errornum、errordesc、errorname、errorcode都是在定義錯誤處理時候填入的列名稱,a、id來自于輸入的記錄的列。

kettle中定義錯誤處理 在kettle執行的過程中,如果遇到錯誤,kettle會停止運作。在某些時候,并不希望kettle停止運作,這時候可以使用錯誤處理(Step Error Handling)。錯誤處理允許你配置一個步驟來取代出現錯誤時停止運作一個轉換,出現錯誤的記錄行将會傳遞給另一個步驟。在Step error handling settings對話框裡,需要設定啟用錯誤處理。

記錄的錯誤資訊如下:

kettle中定義錯誤處理 在kettle執行的過程中,如果遇到錯誤,kettle會停止運作。在某些時候,并不希望kettle停止運作,這時候可以使用錯誤處理(Step Error Handling)。錯誤處理允許你配置一個步驟來取代出現錯誤時停止運作一個轉換,出現錯誤的記錄行将會傳遞給另一個步驟。在Step error handling settings對話框裡,需要設定啟用錯誤處理。

分析 可以看到,錯誤日志裡隻是記錄了出錯的行裡面的資訊,并沒有記錄目前行所在的表名稱以及執行時間等等,如果能夠對此進行擴充,則該錯誤日志表才能更有實際意義。

說明 1.錯誤日志的錯誤碼含義(如:top001)含義見參考文章2.