kettle工具下載、安裝、數(shù)據(jù)遷移、定時(shí)任務(wù)詳解
篇幅有點(diǎn)長,將這五個(gè)內(nèi)容放在了一篇文章里,其中最主要的是數(shù)據(jù)遷移和定時(shí)任務(wù)
目錄
目錄 |
---|
一、簡單介紹 |
二、下載 |
三、安裝 |
四、數(shù)據(jù)遷移:包括單表整體數(shù)據(jù)遷移,單表存在字段不同情況的數(shù)據(jù)遷移,簡單批量數(shù)據(jù)遷移 |
五、定時(shí)任務(wù) |
一、簡單介紹
- kettle 是一個(gè)ETL工具,ETL(Extract-Transform-Load,數(shù)據(jù)抽取、轉(zhuǎn)換、裝載);
- kettle 有兩種腳本文件 transformation和 job;transformation 是轉(zhuǎn)換,job 是對(duì)多個(gè)轉(zhuǎn)換構(gòu)建的整個(gè)工作流的抽象和控制;
- 數(shù)據(jù)抽取高效穩(wěn)定;
二、下載(比較大,慢慢等待)
中文網(wǎng)
下載地址
三、安裝
1.解壓文件,打開就是下面的“解壓后”的文件,我自己的放在了D盤(這個(gè)自己決定)
2.配置kettle的環(huán)境變量
1》.打開系統(tǒng)屬性(直接搜索“環(huán)境變量”),點(diǎn)擊環(huán)境變量
2》.在系統(tǒng)變量中點(diǎn)擊“新建”,彈出“編輯系統(tǒng)變量”,輸入變量名和變量值(這個(gè)是我自己的地址,參考),點(diǎn)擊確定
3》點(diǎn)擊Path,“新建”,將剛才的變量名映射過去,點(diǎn)擊確定,配置完成
3.進(jìn)入“data-integration”文件夾,找到“Spoon.bat”,雙擊運(yùn)行即可(kettle不需要專門安裝),可能有點(diǎn)慢,別急等待
4.已經(jīng)啟動(dòng)
四、數(shù)據(jù)遷移(單表和批量數(shù)據(jù)遷移)
現(xiàn)在已經(jīng)進(jìn)入到kettle工具,如何使用呢,下面是源庫表數(shù)據(jù)導(dǎo)入數(shù)據(jù)到目標(biāo)庫的使用,分為單表導(dǎo)入和批量導(dǎo)入
這個(gè)就是打開的界面
如何將一個(gè)庫的表數(shù)據(jù)轉(zhuǎn)到另一個(gè)庫中,下面分三種遷移方式;
- 一、數(shù)據(jù)整體遷移
注意:這里演示的是將一個(gè)庫A的單個(gè)表整體轉(zhuǎn)入到另一個(gè)庫B中,B庫沒有要遷移的這張表;還會(huì)演示將一個(gè)庫A的表數(shù)據(jù)轉(zhuǎn)移到目標(biāo)庫B已有的表中,而這個(gè)目標(biāo)庫B的表已經(jīng)存在,而且有的字段還不一定對(duì)應(yīng)
1.點(diǎn)擊文件,新建轉(zhuǎn)換;或者雙擊如圖的轉(zhuǎn)換
2.雙擊下面的DB連接,彈出數(shù)據(jù)庫連接,選擇自己對(duì)應(yīng)的庫,填入相對(duì)應(yīng)的內(nèi)容,可以測試是否連接,點(diǎn)擊確定
(我下面的連接時(shí)postgres)
-
注:一個(gè)表的話連接一個(gè),兩個(gè)的話相同操作,名字別搞混,以便后面好操作
附上一張mysql連接圖
3.點(diǎn)擊選擇核心對(duì)象,搜索表輸入,表輸出;雙擊顯示到工作區(qū),點(diǎn)擊某一個(gè)按delete或者右鍵刪除步驟也可以刪除;
中間的箭頭會(huì)直接連接,若沒顯示連接,可以shift+鼠標(biāo)左鍵連接上;也可以點(diǎn)擊如下圖連接過去;這樣他們之間就建立上了連接
4.連接以后,就開始導(dǎo)表了,雙擊表輸入;選擇你要導(dǎo)出表的數(shù)據(jù)庫連接,獲取sql查詢語句以及字段,也可以預(yù)覽表數(shù)據(jù);然后點(diǎn)擊確定。
5.雙擊表輸出,選擇導(dǎo)出表的數(shù)據(jù)庫連接,選擇模式,目標(biāo)表可以選擇也可以輸入你要導(dǎo)出后的表名,點(diǎn)擊sql直接會(huì)形成你想要的sql語句,然后執(zhí)行以一下(若是選擇的目標(biāo)表就不需要執(zhí)行),執(zhí)行以后已經(jīng)自動(dòng)創(chuàng)建表;點(diǎn)擊確定。
6.點(diǎn)擊“小三角”,運(yùn)行,點(diǎn)擊啟動(dòng)
7.保存轉(zhuǎn)換的文件,轉(zhuǎn)換成功
注:現(xiàn)在已經(jīng)將源表導(dǎo)入到目標(biāo)表,如果報(bào)錯(cuò)沒有遷移成功,看是否點(diǎn)擊執(zhí)行了sql語句或者保存了轉(zhuǎn)換的文件,保存的文件后綴是.ktr文件
- 二:數(shù)據(jù)遷移到已有表
這里演示的將一個(gè)庫A的表數(shù)據(jù)轉(zhuǎn)移到目標(biāo)庫B已有的表中,而這個(gè)目標(biāo)庫B的表已經(jīng)存在,而且有的字段還不一定對(duì)應(yīng)
1.現(xiàn)用到的工具如下,可以直接搜索,拖拽到面板上,或者直接點(diǎn)擊
2.然后從第一個(gè)開始,首先單擊第一個(gè)模塊表輸入,如圖:
選擇第四個(gè)帶箭頭的圖標(biāo)或者shift+鼠標(biāo)左鍵,然后會(huì)發(fā)現(xiàn)有個(gè)灰色的箭頭隨著你的鼠標(biāo)移動(dòng),這時(shí)將鼠標(biāo)移動(dòng)到第二個(gè)模塊值映射上,會(huì)發(fā)現(xiàn)箭頭變藍(lán)這時(shí)單擊第二個(gè)模塊值映射,會(huì)發(fā)現(xiàn)表輸入和值映射之間多了一個(gè)藍(lán)色箭頭,有時(shí)需要選擇主輸出步驟。通過這種方式將所有模塊串聯(lián),如下圖:
3.上圖就代表了一個(gè)完整的表的數(shù)據(jù)交換,這時(shí)我們需要在左側(cè)欄,點(diǎn)擊主對(duì)象樹,然后右擊DB連接,選擇新建,然后填入你的數(shù)據(jù)庫連接信息,并測試,成功連接后點(diǎn)確認(rèn)即可新建連接,如圖:
4.首先操作的是表輸入,顧名思義,表輸入代表的就是數(shù)據(jù)的來源,雙擊表輸入,選擇數(shù)據(jù)庫連接,然后寫上你要取數(shù)據(jù)的sql,然后點(diǎn)擊預(yù)覽,可以查看你查找到的數(shù)據(jù),這時(shí)必須查看數(shù)據(jù)格式,因?yàn)椴糠肿侄危纾篸isabled,數(shù)據(jù)庫中存的是0或1,但通過Kettle查找出來的數(shù)據(jù)中,disabled為Y或N
5. 如果預(yù)覽出來數(shù)據(jù),說明sql語句是對(duì)的,點(diǎn)擊值映射,值映射就是將某些值改成另一種值,比如將Y和N映射為1和0。雙擊值映射,首先選擇使用的字段名,然后填上原值和目標(biāo)值,點(diǎn)擊確定即可。如圖:
6.點(diǎn)擊字段選擇,由于數(shù)據(jù)遷移時(shí),必定很多字段存在差異,那么如何將兩張表中的字段一一對(duì)應(yīng)呢,這是就可以通過字段選擇將字段的名稱修改成我們想要的。首先,雙擊字段選擇,切換到第三個(gè)頁簽:元數(shù)據(jù)。然后點(diǎn)擊右邊的獲取改變的字段,然后Kettle會(huì)將你sql中查詢出來的字段一一列出,在改名成那列填上你現(xiàn)表中的字段,類型填上對(duì)應(yīng)的類型,需要注意的是Integer代表Long,Number代表Double,同時(shí),類型也可以不填,但不建議。填完后選擇確定。如圖:
7.這時(shí),你會(huì)發(fā)現(xiàn)可能你現(xiàn)在的表中有很多字段是原表中沒有的,但這些字段又是不可或缺,不能為空的,那么就需要用到增加常量這個(gè)模塊了,可以填上名稱,類型,長度,值(默認(rèn)值),然后點(diǎn)擊確定。如圖:
8. 在完成上部分操作后,基本字段是都可以對(duì)上了,但是,有些字段需要一些邏輯的處理,不能直接將取出來的值直接存入現(xiàn)表中,比如有的項(xiàng)目,遷移過來的時(shí)候,現(xiàn)表已經(jīng)存在數(shù)據(jù),id就存在重復(fù)的現(xiàn)象,把遷移過來的數(shù)據(jù)id直接改為負(fù)值,同時(shí)關(guān)聯(lián)的id也要改為負(fù)值,這樣就可以解決id重復(fù),數(shù)據(jù)無法遷移的問題,同時(shí)關(guān)聯(lián)關(guān)系也不會(huì)丟掉。
· 這時(shí)候就需要用到j(luò)ava代碼這個(gè)模塊了,這里有個(gè)問題,Kettle自帶的java代碼模塊不會(huì)自動(dòng)導(dǎo)入jar包,所以建議先在idea中寫好代碼,然后復(fù)制過來,同時(shí)需要把導(dǎo)入的jar包復(fù)制過來。
· 當(dāng)然,導(dǎo)入的jar包必須在Kettle的文件夾下的lib文件夾中存在。在寫代碼的時(shí)候,可以在左側(cè)欄中的input fields中雙擊getValue,這就是取值;在左側(cè)欄中的output fields中雙擊setValue,這就是賦值。在寫代碼時(shí),可以點(diǎn)擊右下方的測試類來進(jìn)行測試java代碼。所以,java代碼模塊可以用來進(jìn)行邏輯的處理,
· 如果不需要,則刪掉這個(gè)步驟
如圖:
9.雙擊表輸出,選擇導(dǎo)出表的數(shù)據(jù)庫連接,選擇模式,目標(biāo)表可以選擇也可以輸入你要導(dǎo)出后的表名,點(diǎn)擊sql直接會(huì)形成你想要的sql語句,然后執(zhí)行以一下(若是選擇的目標(biāo)表就不需要執(zhí)行),執(zhí)行以后已經(jīng)自動(dòng)創(chuàng)建表;點(diǎn)擊確定。
10. 點(diǎn)擊運(yùn)行,保存轉(zhuǎn)換的文件即可
- 三、單個(gè)或者批量直接導(dǎo)入
注:這里postgres中只可以遷移源庫的public中的數(shù)據(jù),其他模式下的會(huì)提示找不到
1.點(diǎn)擊工具——向?qū)А獜?fù)制單表向?qū)Щ蛘邚?fù)制多表向?qū)Вㄟ@里選擇的是多表),點(diǎn)擊源數(shù)據(jù)庫和目標(biāo)數(shù)據(jù)庫,點(diǎn)擊完成
2.找到源庫中你要用的表,中間按鈕是遷移,右邊會(huì)顯示你選擇的表,點(diǎn)擊next
3.填寫文件名稱,選擇要保存的文件夾,點(diǎn)擊finish。
4.點(diǎn)擊執(zhí)行,遷移成功
五、定時(shí)任務(wù)
1.點(diǎn)擊文件——新建——作業(yè),如下圖:
2.搜索Start和轉(zhuǎn)換功能拖到作業(yè)桌面,或者雙擊,兩者之間建立連接(按住Shift+鼠標(biāo)左鍵連接,或者雙擊直接會(huì)連接)
3.雙擊Start,出現(xiàn)彈窗,選擇類型,填寫需要的時(shí)間間隔,數(shù)據(jù)將會(huì)在設(shè)置的時(shí)間里更新數(shù)庫的數(shù)據(jù),點(diǎn)擊確定(找不見確定,拉大點(diǎn));選擇“重復(fù)”的話,每次更新會(huì)在原有的基礎(chǔ)上疊加數(shù)據(jù)
4.雙擊“轉(zhuǎn)換”,填寫轉(zhuǎn)換后的文件名稱,點(diǎn)擊瀏覽,選擇要做定時(shí)任務(wù)的.ktr文件(瀏覽不了,直接將文件路徑粘貼過來),點(diǎn)擊確定(這里的.ktr文件就是剛才做數(shù)據(jù)遷移后保存的文件)
5.點(diǎn)擊執(zhí)行,保存轉(zhuǎn)換文件,執(zhí)行成功;目前定時(shí)任務(wù)就做好了;數(shù)據(jù)庫里的表數(shù)據(jù)會(huì)按照你設(shè)置的時(shí)間間隔進(jìn)行數(shù)據(jù)刷新
(這里只是做了一張表的定時(shí)任務(wù)哦!)*注:如果報(bào)錯(cuò),要看自己選擇的.ktr文件是否正確,并且是否保存的要轉(zhuǎn)換的文件*
6.做了定時(shí)任務(wù)后,此軟件不可關(guān)閉,關(guān)閉后定時(shí)任務(wù)將不再執(zhí)行,切記哦!
參考:數(shù)據(jù)遷移
希望可以幫助到您文章來源:http://www.zghlxwxcb.cn/news/detail-456390.html
~感謝您的光臨~
文章來源地址http://www.zghlxwxcb.cn/news/detail-456390.html
到了這里,關(guān)于kettle工具下載、安裝、數(shù)據(jù)遷移、定時(shí)任務(wù)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!