1. 程式人生 > >Kettle使用_1轉換之錯誤處理

Kettle使用_1轉換之錯誤處理

需求:通過kettle配置資料轉換失敗的日誌記錄.

解決方法:通過表輸入、表輸出、文字檔案輸出等元件完成該功能.

1)  配置資料庫連線,這裡輸入連線名、主機名稱、資料庫名稱、資料庫使用者名稱、密碼等資料庫的基本資訊

2)  新建立個轉換,或者通過快捷鍵Ctrl+N建立

 

3) 在核心物件裡找到輸入這個分類,然後下拉找到表輸入元件

4)定位到表輸入這個元件並將其拖放到右邊的面板中

5)雙擊表入元件,對元件相應內容進行修改

6)建立驗證表tb_kettle並插入資料後修改表輸入元件中SQL的內容見下截圖示意:

CREATE TABLE `tb_kettle` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '元資料標識',
  `name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `birthday` date DEFAULT NULL COMMENT '出生日期',
  `des` varchar(6) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULTCHARSET=utf8;

INSERT INTO tb_kettle(name, birthday, des)
  VALUES ('Tom', '1988/3/23 0:00:00', 'good');

INSERT INTO tb_kettle(name, birthday, des)
  VALUES ('Tim', '1978/2/16 0:00:00', 'nice');

INSERT INTO tb_kettle(name, birthday, des)
  VALUES ('Kate', '1968/6/24 0:00:00', 'badguy');

INSERT INTO tb_kettle(name, birthday, des)
  VALUES ('Mike', '1998/3/13 0:00:00', 'badman');


7)我們先定義好要輸出的表結構,這裡為了演示錯誤處理的過程,故意將des欄位定義短了些,見如下SQL語句.

CREATE TABLE `tb_kettle_out` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '元資料標識',
  `name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `birthday` date DEFAULT NULL COMMENT '出生日期',
  `des` varchar(4) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

注:此步可直接在資料庫裡執行,也可以在表輸入元件裡執行該DDL.

7)同理找到輸出這個分類並找到表輸出這個元件,然後拖到右邊面板中.這時需要做個動作:點選表輸入元件,按住SHIFT鍵,將表輸入和表輸出連線起來,見下圖所示:

8)雙擊表輸出元件,選擇要輸出的表,如果tb_kettle_out已經在資料庫裡建好則只需要選擇即可,如果還未建立,可以參照步驟9

9)如果想在表輸入時執行DDL,可參見下面的步驟,先雙擊表輸出元件,在選中表後執行DDL,詳細步驟見下圖所示:

10)同理拖動一個文字檔案輸出元件並將表輸出和其連線,這裡選擇錯誤處理步驟

11)右擊表輸出,選中定義錯誤處理選項並定義錯誤相關的欄位名稱,具體見下圖:

 

 

12)右擊文字檔案輸出,設定錯誤檔案要輸出的欄位,具體設定見下圖:

 

 

13)執行轉換並驗證執行結果

 

開啟錯誤文字檔案不難發現tb_kettle裡的4條記錄有2條在錯誤日誌內:

同時檢視tb_kettle_out不難發現進來了2條記錄.