Kettle開(kāi)發(fā)使用基礎(chǔ)手冊(cè)_第1頁(yè)
Kettle開(kāi)發(fā)使用基礎(chǔ)手冊(cè)_第2頁(yè)
Kettle開(kāi)發(fā)使用基礎(chǔ)手冊(cè)_第3頁(yè)
Kettle開(kāi)發(fā)使用基礎(chǔ)手冊(cè)_第4頁(yè)
Kettle開(kāi)發(fā)使用基礎(chǔ)手冊(cè)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Kettle開(kāi)發(fā)使用手冊(cè)4月版本歷史說(shuō)明版本作者日期備注1.0彭偉峰.04.11

Kettle介紹什么是KettleKettle是純Java編寫(xiě)、無(wú)償開(kāi)源ETL工具,關(guān)鍵用于抽取(Extraction)、轉(zhuǎn)換(Transformation)、和裝載(Loading)數(shù)據(jù)。Kettle漢字名稱(chēng)叫水壺,該項(xiàng)目標(biāo)主程序員MATT期望把多種數(shù)據(jù)放到一個(gè)壺里,然后以一個(gè)指定格式流出。在這種思想設(shè)計(jì)下,Kettle廣泛用于不一樣數(shù)據(jù)庫(kù)之間數(shù)據(jù)抽取,比如Mysql數(shù)據(jù)庫(kù)數(shù)據(jù)傳到Oracle,Oracle數(shù)據(jù)庫(kù)數(shù)據(jù)傳到Greenplum數(shù)據(jù)庫(kù)。Kettle安裝Kettle工具是不需要安裝,直接網(wǎng)上下載解壓就能夠運(yùn)行了。不過(guò)它依靠于Java,需要當(dāng)?shù)赜蠮DK環(huán)境,假如是安裝4.2或5.4版本,JDK需要1.5以上版本,推薦1.6或1.7JDK。運(yùn)行Kettle直接雙擊里面批處理文件spoon.bat就行了,圖1.1所表示:圖1.1Kettle腳本開(kāi)發(fā)建立資源庫(kù)(repository倉(cāng)庫(kù))Repository倉(cāng)庫(kù)是用來(lái)存放全部kettle文件文件系統(tǒng),因?yàn)閿?shù)據(jù)交換平臺(tái)服務(wù)器管理kettle文件也是用Repository倉(cāng)庫(kù),所以我們這邊當(dāng)?shù)豮ettle開(kāi)發(fā)環(huán)境也是要用到該資源庫(kù)。建立資源庫(kù)方法是工具-->資源庫(kù)-->連接資源庫(kù),這時(shí)候彈出一個(gè)窗口,我們點(diǎn)擊右上角“+”號(hào),跟著點(diǎn)擊下面kettlefilerepository選項(xiàng),按確定,圖2.1所表示:圖2.1跟著在右上角選擇一個(gè)目錄,提議在kettle路徑下新建repository文件夾,再選擇這個(gè)文件夾作為根目錄,名稱(chēng)和描述能夠任意寫(xiě),圖2.2所表示:圖2.2建完后會(huì)kettle工具會(huì)自動(dòng)連接到repository資源庫(kù),每次打開(kāi)kettle也會(huì)彈出一個(gè)窗口讓你先連接到資源庫(kù)。在連接到資源庫(kù)情況下打開(kāi)文件就是資源庫(kù)所在目錄了,圖2.3所表示。注意你在資源庫(kù)建目錄結(jié)構(gòu)要跟數(shù)據(jù)交換平臺(tái)目錄結(jié)構(gòu)一致,這么寫(xiě)好kettle腳本,保留后放路徑能跟交換平臺(tái)目錄結(jié)構(gòu)一致了。圖2.3在目標(biāo)數(shù)據(jù)庫(kù)里新建表在做數(shù)據(jù)遷移時(shí)候我們需要先在目標(biāo)數(shù)據(jù)庫(kù)建立和源數(shù)據(jù)庫(kù)類(lèi)似表結(jié)構(gòu),才能在這兩張表之間做數(shù)據(jù)遷移,以oracle數(shù)據(jù)庫(kù)到gp數(shù)據(jù)庫(kù),T_SF_DWJFDJXX_TEST表做數(shù)據(jù)遷移為例,我們先建類(lèi)似表結(jié)構(gòu),首先先把表結(jié)構(gòu)代碼拷出來(lái):createtableT_SF_DWJFDJXX_TEST(NSRNBMNUMBER(10)notnull,DWSBHVARCHAR2(18)notnull,JFDWNBMNUMBER(10)notnull,HYFL_DMCHAR(1)notnull,JFDWLX_DMCHAR(3)notnull,SBJC_DMCHAR(2)notnull,SBGLJG_DMVARCHAR2(11)notnull,SWGLJG_DMVARCHAR2(11)notnull,SBDJ_ZTCHAR(2)notnull,DJSLRY_DMVARCHAR2(11),DJSL_RQDATE,LRRY_DMVARCHAR2(11),XGRY_DMVARCHAR2(11),DJ_RQDATE,DJJG_DMVARCHAR2(11),LR_SJTIMESTAMP(6),XG_SJTIMESTAMP(6),ZDFY_BJCHAR(1),XMMCVARCHAR2(100),KNQYBZ_DMCHAR(1),ZDYCKJN_BJCHAR(1),SJJHPT_SJTIMESTAMP(6),SJJHPT_DZNUMBER(14));跟著在這個(gè)表結(jié)構(gòu)基礎(chǔ)上,在目標(biāo)數(shù)據(jù)庫(kù)創(chuàng)建新表。需要注意是,gp數(shù)據(jù)庫(kù)數(shù)據(jù)類(lèi)型有些跟oracle一樣,有些不一樣。相同就不用改了,不一樣就改下。以上面數(shù)據(jù)類(lèi)型為例,相同有char、date、timestamp,不一樣是varchar2和number,所以,varchar2(n)要改成varchar(n),number(n)要改成integer(注意不帶數(shù)字長(zhǎng)度n)。建完以后,我們就能夠在這不一樣數(shù)據(jù)庫(kù)兩張表之間進(jìn)行數(shù)據(jù)遷移或數(shù)據(jù)定時(shí)傳輸。源數(shù)據(jù)庫(kù)和目標(biāo)數(shù)據(jù)庫(kù)jndi設(shè)置Jndi是kettle連接數(shù)據(jù)庫(kù)配置文件,相當(dāng)于oracletns。Jndi設(shè)置目錄是在kettle目錄下simple-jndi文件夾里,打開(kāi)后編輯perties來(lái)設(shè)置jndi,下面附上企業(yè)揭陽(yáng)涉稅項(xiàng)目oracle到gp數(shù)據(jù)庫(kù)jndi設(shè)置,分別是源端oracle數(shù)據(jù)庫(kù)和目標(biāo)端gp數(shù)據(jù)庫(kù)。配置信息斜杠左邊是jndi名,這里jndi命名規(guī)則是數(shù)據(jù)庫(kù)名_用戶(hù)名,注意當(dāng)?shù)豭ndi名要跟交換平臺(tái)jndi名一致。配置信息斜杠右邊分別是數(shù)據(jù)庫(kù)類(lèi)型、驅(qū)動(dòng)、數(shù)據(jù)庫(kù)地址、用戶(hù)名和密碼。注意,相同數(shù)據(jù)庫(kù)配置寫(xiě)法相同,不一樣數(shù)據(jù)庫(kù)配置寫(xiě)法略有不一樣,像下面oracle和gp數(shù)據(jù)庫(kù)driver和url地址寫(xiě)法就不一樣。oracle_db_mhpt/type=javax.sql.DataSourceoracle_db_mhpt/driver=oracle.jdbc.driver.OracleDriveroracle_db_mhpt/url=jdbc:oracle:thin:@1:1521:zrmhdboracle_db_mhpt/user=db_mhptoracle_db_mhpt/password=DB_MHPTgp_public/type=javax.sql.DataSourcegp_public/driver=org.postgresql.Drivergp_public/url=jdbc:postgresql://65:5432/postgresgp_public/database=8gp_public/user=gpadmingp_public/password=gpadmin寫(xiě)kettle腳本Kettle腳本有兩種,ktr腳本跟kjb腳本,其中ktr負(fù)責(zé)實(shí)施,具體要做什么由ktr來(lái)負(fù)責(zé);kjb負(fù)責(zé)調(diào)度,調(diào)用一個(gè)或多個(gè)ktr。Ktr和kjb關(guān)系類(lèi)似于像職員和領(lǐng)導(dǎo)之間,職員負(fù)責(zé)具體事務(wù)操作,領(lǐng)導(dǎo)負(fù)責(zé)計(jì)劃安排工作。新建ktr腳本能夠點(diǎn)擊左上角文件-->新建-->轉(zhuǎn)換,新建kjb腳本就文件-->新建-->作業(yè)。我們這里傳輸數(shù)據(jù)只要用到kjb腳本,一張表數(shù)據(jù)傳輸要有1個(gè)腳本。首先先新建一個(gè)ktr文件,圖2.4所表示,跟著我們根據(jù)主界面提醒拖動(dòng)主鍵來(lái)操作。拖動(dòng)組件在關(guān)鍵對(duì)象組件庫(kù)里。圖2.4跟著我們需要4個(gè)組件,分別是獲取變量、表輸入、字符串操作、插入/更新,先從組件庫(kù)里找到這些組件然后拖動(dòng)到右邊面板上,查找組件能夠用組件名稱(chēng)來(lái)在組建搜索框里搜索。拖動(dòng)后圖2.5所表示。圖2.5然后給她們組件之間建立連接,用拉箭頭來(lái)連接即可,圖2.6所表示:圖2.6組件之間連接完以后,跟著雙擊組件一個(gè)個(gè)編輯。第一步是獲取變量,在獲取變量前首先要設(shè)置入?yún)⒂脕?lái)獲取變量,設(shè)置變量先雙擊主對(duì)象樹(shù)ktr名(轉(zhuǎn)換1是未保留文件到當(dāng)?shù)啬J(rèn)名),跟著設(shè)置命名參數(shù)。圖2.7跟2.8所表示。其中start_timestamp和end_timestamp這兩個(gè)是數(shù)據(jù)交換平臺(tái)服務(wù)器上默認(rèn)用于增量抽取數(shù)據(jù)兩個(gè)入?yún)?,分別表示數(shù)據(jù)開(kāi)始時(shí)間跟數(shù)據(jù)結(jié)束時(shí)間。這里填上了默認(rèn)值方便測(cè)試。圖2.7圖2.8設(shè)置入?yún)⒑笤倬庉嫬@取變量組件,這里名稱(chēng)跟入?yún)⒁粯樱琸ettle變量名寫(xiě)法是${Variables},類(lèi)型我們選擇string,因?yàn)榉?wù)器上交換平臺(tái)傳進(jìn)來(lái)start_timestamp和end_timestamp參數(shù)也是string類(lèi)型,我們這里跟它一致。也圖2.9所表示:圖2.9第二步是表輸入,首先要先連接數(shù)據(jù)庫(kù),之前我們?cè)诋?dāng)?shù)匚募吓渲昧薺ndi,這里jndi就用得上。新建或編輯數(shù)據(jù)庫(kù)連接,選擇好連接數(shù)據(jù)庫(kù),還有jndi連接方法,再填上jndi名稱(chēng)和連接名稱(chēng),設(shè)置完了就點(diǎn)擊左下角測(cè)試來(lái)測(cè)試當(dāng)?shù)啬懿荒苓B上數(shù)據(jù)庫(kù)。連上了我們才做其它步驟。圖2.10連通好后,寫(xiě)好sql語(yǔ)句。這里sql語(yǔ)句用到變量,kettle變量寫(xiě)法是${variables},而使用變量要在左右兩端再加上單引號(hào),變成’${variables}’。注意數(shù)據(jù)庫(kù)后臺(tái)日期類(lèi)型是date,而變量是字符串類(lèi)型,所以需要做個(gè)變量類(lèi)型轉(zhuǎn)換。因?yàn)橛惺褂米兞浚孕枰瓷稀疤鎿Qsql語(yǔ)句里變量”單選框。設(shè)置好后能夠預(yù)覽下數(shù)據(jù)看下。圖2.11第三步是字段去除左右空格,編輯“字符串操作”,點(diǎn)getfields獲取從上個(gè)步驟表表輸入獲取字段名,然后把trimtype全部選擇both,意思是去除字段左右兩端空格。假如getfields得到字段有start_timestamp和end_timestamp這兩個(gè),這兩個(gè)多出,就刪去。以下圖所表示:圖2.12第四步是插入數(shù)據(jù)到目標(biāo)端新表,首先是要先連通目標(biāo)端數(shù)據(jù)庫(kù)。設(shè)置好后再點(diǎn)擊“測(cè)試”連通到目標(biāo)端數(shù)據(jù)庫(kù)。圖2.13跟著是設(shè)置目標(biāo)表(目標(biāo)模式能夠不填),點(diǎn)擊瀏覽選擇模式/用戶(hù)下數(shù)據(jù)庫(kù)表。然后設(shè)置每插入多少條數(shù)據(jù)提交提交統(tǒng)計(jì)數(shù)量,用來(lái)查詢(xún)關(guān)鍵字選擇主鍵字段,而更新字段是全部,點(diǎn)擊獲取字段即可。她這里操作原理是:假如目標(biāo)表有符合該查詢(xún)條件統(tǒng)計(jì)時(shí),那么更新此條數(shù)據(jù);不符合時(shí),那么將源表此條數(shù)據(jù)插入到目標(biāo)表。圖2.14這四個(gè)步驟編輯完成后最終就是實(shí)施這四個(gè)步驟了,點(diǎn)擊左上角運(yùn)行圖標(biāo),設(shè)置時(shí)間參數(shù)或時(shí)間參數(shù)根據(jù)默認(rèn)值,運(yùn)行后,假如全部組件全部有綠色勾勾標(biāo)志話(huà)說(shuō)明全部運(yùn)行成功,以下圖所表示。假如某一個(gè)步驟失敗話(huà)就是紅色勾勾標(biāo)志,這時(shí)候就要看日志或步驟度量來(lái)分析了。從下面步驟度量看表輸入有1條數(shù)據(jù)輸入進(jìn)來(lái),插入/更新步驟有1條數(shù)據(jù)寫(xiě)進(jìn)去了。圖2.15

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論