Kettle-开源的ETL工具集-实现SqlServer到Mysql表的数据同步并部署在Windows服务器上
場(chǎng)景
kettle
中文名稱叫水壺,該項(xiàng)目的主程序員MATT希望把各種數(shù)據(jù)放到一個(gè)壺里,然后
以一種指定的格式流出。是一款由純Java編寫的ETL工具,綠色無需安裝,數(shù)據(jù)抽取高效穩(wěn)定(數(shù)據(jù)遷移工具)。
業(yè)務(wù)需要,從A系統(tǒng)的Sqlserver數(shù)據(jù)庫的某個(gè)表或者視圖,同步到B系統(tǒng)的Mysql的某個(gè)表。
Sqlserver的表和mysql表的結(jié)構(gòu)一致。
在SqlServer數(shù)據(jù)庫中新建一個(gè)表student
設(shè)置id為主鍵
然后在另一個(gè)Mysql表新建表student
結(jié)構(gòu)一樣,id同樣為自增主鍵。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號(hào)
霸道的程序猿
獲取編程相關(guān)電子書、教程推送與免費(fèi)下載。
實(shí)現(xiàn)
1、下載地址
https://sourceforge.net/projects/pentaho/files/Data%20Integration/
點(diǎn)進(jìn)去之后,點(diǎn)擊zip下載
下載之后解壓到某目錄下即可
2、運(yùn)行
找到解壓目錄下的Spoon.bat雙擊運(yùn)行
運(yùn)行成功后會(huì)看到如下界面
3、新建轉(zhuǎn)換
主對(duì)象樹下轉(zhuǎn)換-新建
4、新建數(shù)據(jù)庫連接
轉(zhuǎn)換-DB連接-新建
在建立數(shù)據(jù)庫連接的時(shí)候,需要將對(duì)應(yīng)數(shù)據(jù)庫的驅(qū)動(dòng)jar包放在lib目錄下
比如這里先連接Mysql,下載mysql對(duì)應(yīng)的驅(qū)動(dòng)jar包,這里是mysql5.6
https://downloads.mysql.com/archives/installer/
選擇對(duì)應(yīng)的版本下載解壓后將驅(qū)動(dòng)jar包放在lib目錄下
如果不放置驅(qū)動(dòng)jar包會(huì)報(bào)錯(cuò)
只有放置正確的驅(qū)動(dòng)jar包后,點(diǎn)擊測(cè)試才能連接成功
再建立一個(gè)DB連接,連接Sqlserver,同樣需要下載sqlserver的驅(qū)動(dòng)jar包
https://docs.microsoft.com/zh-cn/sql/connect/jdbc/release-notes-for-the-jdbc-driver?view=sql-server-2017#82
根據(jù)sqlserver的版本下載對(duì)應(yīng)的jar包,如果不確定sqlserver版本與驅(qū)動(dòng)jar包的對(duì)應(yīng)關(guān)系,就多下載,然后建立DB連接成功后,進(jìn)行刪除,哪一個(gè)提示正在使用中就保留。
下載完驅(qū)動(dòng)jar包后,進(jìn)行測(cè)試連接sqlserver,否則會(huì)提示
直到建立Sqlserver連接成功
5、編輯轉(zhuǎn)換
首先整個(gè)轉(zhuǎn)換的流程如下
?(1)建立mysql的表輸入
核心對(duì)象-輸入-表輸入-拖拽-雙擊編輯-編輯名稱-選擇數(shù)據(jù)連接-獲取sql數(shù)據(jù)查詢語句-確定
?(2)mysql字段選擇
核心對(duì)象-轉(zhuǎn)換-字段選擇
點(diǎn)擊上面mysql的表輸入,按住shift連接到mysql字段轉(zhuǎn)換
雙擊編輯-元數(shù)據(jù)-獲取改變的字段-將Binary to Normal都改為是,另外兩個(gè)改為否
(3)mysql排序記錄
轉(zhuǎn)換-排序記錄-雙擊編輯-獲取字段-保留id作為排序字段
?(4)同樣的進(jìn)行下面的sqlserver的表輸入
?(5)sqlserver的字段選擇
?(6)sqlserver的排序記錄
?(7)合并記錄
將上面的兩個(gè)排序連接到合并記錄上。
連接-合并記錄-雙擊編輯-選擇兩個(gè)數(shù)據(jù)源
這里的標(biāo)志字段可以用默認(rèn)的字段,合并之后會(huì)以此字段為增刪改的依據(jù)。
然后點(diǎn)擊獲取關(guān)鍵字段-獲取值字段,其中關(guān)鍵字段是id唯一鍵,關(guān)鍵值是除了id唯一鍵之外的值。
?(8)數(shù)據(jù)同步
輸出-數(shù)據(jù)同步-選擇目標(biāo)數(shù)據(jù)庫和目標(biāo)表-批量更新-選擇關(guān)鍵字為id,關(guān)系為是否相等-更新字段為所有字段,會(huì)默認(rèn)帶著上面的標(biāo)志字段,記得去掉
?然后切換到高級(jí)頁面,將操作設(shè)置為對(duì)應(yīng)下面
標(biāo)志字段:設(shè)置標(biāo)志字段的名稱,標(biāo)志字段用于保存比較的結(jié)果,比較結(jié)果有下列幾種。
1. “identical” – 舊數(shù)據(jù)和新數(shù)據(jù)一樣
2. “changed” – 數(shù)據(jù)發(fā)生了變化;
3. “new” – 新數(shù)據(jù)中有而舊數(shù)據(jù)中沒有的記錄
4. “deleted” –舊數(shù)據(jù)中有而新數(shù)據(jù)中沒有的記錄
?6、執(zhí)行轉(zhuǎn)換
點(diǎn)擊右上角三角號(hào)執(zhí)行一次轉(zhuǎn)換,下面日志顯示執(zhí)行成功則沒有問題。
可以通過修改sqlserver的數(shù)據(jù),然后執(zhí)行一次后,查看mysql的數(shù)據(jù)是否同步成功。
?然后保存,會(huì)在磁盤下保存一個(gè)kjb后綴名的文件
7、新建作業(yè)
通用-作業(yè)-拖拽-雙擊編輯-設(shè)置執(zhí)行的時(shí)間間隔-下面設(shè)置的是每10秒重復(fù)一次
拖拽一個(gè)轉(zhuǎn)換-雙擊編輯
選擇上面保存的ktr轉(zhuǎn)換的文件
將START與轉(zhuǎn)換之間連接上。
8、運(yùn)行作業(yè)
點(diǎn)擊作業(yè)的左上角三角號(hào)就會(huì)持續(xù)運(yùn)行,點(diǎn)擊正方形就會(huì)停止運(yùn)行
9、部署運(yùn)行
這里是在Windows服務(wù)器上,可以直接連同整個(gè)程序以及轉(zhuǎn)換文件和作業(yè)文件同樣的再服務(wù)器上部署一套。
或者是將kuttle的整個(gè)目錄pdi-cd-7.1里面,復(fù)制上面新建的轉(zhuǎn)換文件ktr以及作業(yè)文件kjb
并且在此目錄下新建Bat腳本start.bat
首先需要更改kjb文件中引用ktr文件的路徑,使用文本編輯工具打開kjb文件,將ktr文件的路徑修改為相對(duì)路徑
<filename>${Internal.Job.Filename.Directory}/tranTest.ktr</filename>?然后修改bat腳本的內(nèi)容
@echo offset pwd=%~sdp0%pwd%\data-integration\Kitchen.bat /file %pwd%\sysjob.kjbpause;該腳本的意思是獲取當(dāng)前路徑下data-intergration下的Kitchen.bat并設(shè)置file參數(shù)為當(dāng)前目錄下的sysjob.kjb文件
雙擊bat文件運(yùn)行
沒有報(bào)錯(cuò)則部署成功。
總結(jié)
以上是生活随笔為你收集整理的Kettle-开源的ETL工具集-实现SqlServer到Mysql表的数据同步并部署在Windows服务器上的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CentOS中使用Docker安装Sql
- 下一篇: CentOS中使用Dockerfile部