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