原文地址:http://www.xue51.com/soft/5341.htmlhtml
Kettle是來自國外的一款開源的ETL工具,純java編寫,能夠在Window、Linux、Unix上運行,綠色無需安裝。Kettle能夠幫助你實現你的ETTL須要:抽取、轉換、裝入和加載數據數據,且抽取高效穩定。Kettle這個ETL工具集,翻譯成中文名稱應該叫水壺,寓意爲但願把各類數據放到一個壺裏而後以一種指定的格式流出。它容許你管理來自不一樣數據庫的數據,經過提供一個圖形化的用戶環境來描述你想作什麼,而不是你想怎麼作。java
官方網站下載地址:https://community.hitachivantara.com/docs/DOC-1009855 目前最新穩定版本已經到8.2了。sql
Kettle家族目前包括4個產品:Spoon、Pan、CHEF、Kitchen。 數據庫
一、打開Spoon.bat,打開後請耐心等待一下子時間。
二、配置Kettle的環境變量:(前提是配置好Java的環境變量,由於他是java編寫,須要本地的JVM的運行環境)在系統的環境變量中添加KETTLE_HOME變量,目錄指向kettle的安裝目錄
新建系統變量:KETTLE_HOME
變量值: D:\kettle\data-integration(具體以安裝路徑爲準,Kettle的解壓路徑,直到Kettle.exe所在目錄)
選擇PATH添加環境變量:
變量名:PATH
變量值:% KETTLE_HOME%;
三、創建轉換。
在文件->新建裝換。
新建轉換後在左邊的主對象樹中創建DB鏈接用以鏈接數據庫。
創建數據庫鏈接的過程與其餘數據庫管理軟件鏈接數據庫相似。
注意:在數據庫連接的過程當中,可能會報某個數據庫鏈接找不到的異常。那是由於你沒有對應的數據庫連接驅動,請下載對應驅動後,放入kettle的lib文件夾。
四、簡單的數據表插入\更新
新建表插入
在左邊的面板中選擇「核心對象」,在覈心對象裏面選擇「輸入->表輸入」,用鼠標拖動到右邊面板。
五、雙擊拖過來的表,能夠編輯表輸入。
選擇數據庫鏈接和編輯sql語句,在這一步能夠點擊預覽,查看本身是否鏈接正確。
六、經過插入\更新輸出到表。
在左邊面板中選擇核心對象、選擇「輸出->插入\更新」
七、編輯插入更新:
首先:表輸入鏈接插入更新。
選中表輸入,按住shift鍵,拖向插入更新。
八、而後:雙擊插入更新,編輯它。
到這裏基本上,這個轉換就要作完了,能夠點擊運行查看效果,看是否有誤,這個要先保存了才能運行,能夠隨意保存到任何一個地方。
九、使用做業控制上面裝換執行。
使用做業能夠定時或週期性的執行轉換,新建一個做業。並從左邊面板拖入start 和轉換。
十、雙擊start能夠編輯,能夠設置執行時間等等
十一、點開裝換,能夠設置須要執行的轉換任務,好比能夠執行上面咱們作的轉換,XXX.ktr最後點擊運行便可。緩存
一、表視圖模式:這種狀況咱們常常遇到,就是在同一網絡環境下,咱們對各類數據源的表數據進行抽取、過濾、清洗等,例如歷史數據同步、異構系統數據交互、數據對稱發佈或備份等都歸屬於這個模式;傳統的實現方式通常都要進行研發(一小部分例如兩個相同表結構的表之間的數據同步,若是sqlserver數據庫能夠經過發佈/訂閱實現),涉及到一些複雜的一些業務邏輯若是咱們研發出來還容易出各類bug;
二、前置機模式:這是一種典型的數據交換應用場景,數據交換的雙方A和B網絡不通,可是A和B均可以和前置機C鏈接,通常的狀況是雙方約定好前置機的數據結構,這個結構跟A和B的數據結構基本上是不一致的,這樣咱們就須要把應用上的數據按照數據標準推送到前置機上,這個研發工做量仍是比較大的;
三、文件模式: 數據交互的雙方A和B是徹底的物理隔離,這樣就只能經過以文件的方式來進行數據交互了,例如XML格式,在應用A中咱們開發一個接口用來生成標準格式的XML,而後用優盤或者別的介質在某一時間把XML數據拷貝以後,而後接入到應用B上,應用B上在按照標準接口解析相應的文件把數據接收過來網絡
一、Kettle沒法啓動
修改一下spoon.bat裏內存配置:
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms2058m" "-Xmx1024m" "-XX:MaxPermSize=256m"
改成
if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms512m" "-Xmx512m" "-XX:MaxPermSize=256m"
二、如何鏈接資源庫?
若是沒有則建立資源庫
三、如何鏈接數據庫?
在鏈接數據庫以前,首先須要保證當前在一個transform(轉換)頁面,而後點擊左側選項欄中的「主對象樹」,而後右鍵點擊「DB鏈接」,選擇「新建」。
固然也能夠設置一些其餘的鏈接屬性,如zeroDateTimeBehavior=round&characterEncoding=utf8。
四、如何解決數據庫鏈接更新不及時問題?
有時候咱們數據庫中的表的字段進行了更新(增長或刪除字段),可是在使用「表輸入」控件的「獲取SQL語句」功能是會發現的到的字段仍是原來的字段,這是因爲緩存形成的,須要進行緩存清理。
五、如何解決Unable to read file錯誤?
有時候咱們在文件夾中將Job或Transform移動到其餘目錄以後,執行時會出現Unable to read file錯誤。而後就進入到了當前Transform的配置頁面。修改配置中的目錄便可。
六、如何解決tinyint類型數據丟失問題?
在Kettle使用JDBC鏈接MySQL時,對於表中數據類型爲tinyint的字段,讀取時有可能會將其轉爲bool類型,這有可能形成數據丟失。例如,有一個叫status名字的tinyint類型字段,取值有三種:0、一、2。kettle讀取以後極可能將0轉爲false,一、2都轉爲true。輸出時,將false轉爲0,true轉爲1,這樣就會形成元數據中status爲2的數據被錯誤的賦值爲1。
解決這個問題時,能夠在讀取元數據時將status轉爲int或char。好比SELECT CAST(status as signed) as status FROM 或SELECT CAST(status as char) as status FROM數據結構