本文要點:Kettle的建立數據庫連接、使用kettle進行簡單的全量對比插入更新:kettle會自動對比用戶設置的對比字段,若目標表不存在該字段,則新插入該條記錄。若存在,則更新。
Kettle簡介:Kettle是一款國外開源的ETL工具,純java編寫,可以在Window、Linux、Unix上運行,數據抽取高效穩定。Kettle 中文名稱叫水壺,該項目的主程序員MATT 希望把各種數據放到一個壺里,然后以一種指定的格式流出。Kettle這個ETL工具集,它允許你管理來自不同數據庫的數據,通過提供一個圖形化的用戶環境來描述你想做什么,而不是你想怎么做。Kettle中有兩種腳本文件,transformation和job,transformation完成針對數據的基礎轉換,job則完成整個工作流的控制。(引用百度百科)
1、Kettle的下載與安裝(在本文中使用的kettle版本為6.1.0.1-196)
kettle的最新下載地址:http://community.pentaho.com/projects/data-integration/
2、打開kettle。
首先解壓下載下來的壓縮包如:pdi-ce-6.1.0.1-196.zip
然后打開Spoon.bat,如圖所示:
打開后請耐心等待一會兒時間。
3、建立轉換。
在文件->新建裝換。
新建轉換后在左邊的主對象樹中建立DB連接用以連接數據庫。如圖所示:
建立數據庫連接的過程與其他數據庫管理軟件連接數據庫類似。
注意:在數據庫鏈接的過程中,可能會報某個數據庫連接找不到的異常。那是因為你沒有對應的數據庫鏈接驅動,請下載對應驅動后,放入kettle的lib文件夾。
4、簡單的數據表插入\更新
(1)新建表插入
在左邊的面板中選擇“核心對象”,在核心對象里面選擇“輸入->表輸入”,用鼠標拖動到右邊面板。如圖所示:
雙擊拖過來的表,可以編輯表輸入。
選擇數據庫連接和編輯sql語句,在這一步可以點擊預覽,查看自己是否連接正確。
(2)通過插入\更新輸出到表。
在左邊面板中選擇核心對象、選擇“輸出->插入\更新”如圖所示:
編輯插入更新:
首先:表輸入連接插入更新。
選中表輸入,按住shift鍵,拖向插入更新。
然后:雙擊插入更新,編輯它。
到這里基本上,這個轉換就要做完了,可以點擊運行查看效果,看是否有誤,這個要先保存了才能運行,可以隨意保存到任何一個地方。
5、使用作業控制上面裝換執行。
使用作業可以定時或周期性的執行轉換,新建一個作業。並從左邊面板拖入start 和轉換。
雙擊start可以編輯,可以設置執行時間等等
點開裝換,可以設置需要執行的轉換任務,比如可以執行上面我們做的轉換,XXX.ktr
最后點擊運行即可。
到這里,一個簡單的通過作業調度的kettle就算做完了。
附錄:測試數據表

1 -- ---------------------------- 2 DROP TABLE IF EXISTS `student`; 3 CREATE TABLE `student` ( 4 `userId` int(11) NOT NULL AUTO_INCREMENT, 5 `userName` varchar(20) DEFAULT NULL, 6 `userage` int(11) DEFAULT NULL, 7 `timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, 8 PRIMARY KEY (`userId`) 9 ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8; 10 11 -- ---------------------------- 12 -- Table structure for student2 13 -- ---------------------------- 14 DROP TABLE IF EXISTS `student2`; 15 CREATE TABLE `student2` ( 16 `userId` int(11) NOT NULL AUTO_INCREMENT, 17 `userName` varchar(20) DEFAULT NULL, 18 `userage` int(11) DEFAULT NULL, 19 `timestamp` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP, 20 PRIMARY KEY (`userId`) 21 ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;