Kettle使用_1转换之错误处理
需求:通過kettle配置數據轉換失敗的日志記錄.
解決方法:通過表輸入、表輸出、文本文件輸出等組件完成該功能.
注: 其它案例詳見 ETL-Kettle專欄,?Kettle 50個腳本(代碼)
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條記錄.
總結
以上是生活随笔為你收集整理的Kettle使用_1转换之错误处理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kettle使用_0 Windows下安
- 下一篇: Kettle使用_6 配置资源库