利用第三方kettle實現數據庫之間的數據同步1(包括mysql和oracle之間數據的對接)

一般在項目裏,我們難免會遇到不同數據庫間的數據遷移,或者是不同數據庫之間的數據同步對接。而kettle軟件作爲第三方軟件可以很好的實現對接。
由於本人也是剛剛使用這個軟件,所以在這裏分享幾個簡單的數據對接案例。
一、步驟準備

  1. 安裝mysql數據庫
  2. 安裝Oracle數據庫
  3. 下載pdi-ce-5.4.0.1-130,並且打開data-integration底下的spoon即可打開軟件

二、簡單入門(例子1:簡單實現同一個數據庫的不同表數據同步)

  1. 新建轉換
    在這裏插入圖片描述
  2. 修改轉換名稱及備註
    在這裏插入圖片描述
    在這裏插入圖片描述
  3. 添加數據庫
    雙擊DB連接,填寫配置信息,然後點擊測試,如果顯示連接成功即可。如果需要共享數據庫,可以點擊連接的數據庫,右鍵,共享即可(共享需要重啓kettle纔可以實現)。
    在這裏插入圖片描述
  4. 添加步驟
    該例子主要實現oracle數據庫的一個表數據轉移到另一個表,如果兩個表字段不同,可以通過映射字段轉移!!
    主要的步驟包括:1.讀取表數據-。2.插入表數據。首先找到核心對象–》輸入–》表輸入,然後鼠標左鍵將表輸入拖入右邊白色區域,如下圖
    在這裏插入圖片描述
    同理,將輸出–》插入/更新拖到右邊白色步驟,並且按住shift,左鍵從“表輸出”拖動到“插入/更新”即可建立關係,如果想要取消關聯運行,再點擊一次使黑色箭頭線變成灰色即可,或者也可以直接右鍵-刪除。如下圖所示:在這裏插入圖片描述
  5. 編寫步驟邏輯
    雙擊“表輸入”,填入相關邏輯,也可以自定義步驟名稱。填寫完可以測試下是否能夠讀取到想要的數據、
    在這裏插入圖片描述
    然後雙擊“插入/更新”,填入相關邏輯。
    在這裏插入圖片描述
    需要注意的是,這個地方的“用來查詢的關鍵字”,可以理解爲更新條件。以我上圖的爲例,當oracle_to_mysql表的數據的id在kettle_test存在時,則這條記錄就會被更新,不存在則進行新增。
  6. 執行
    點擊上方的三角符號即可進行轉換。
    在這裏插入圖片描述

三、實現定時功能(在上一個例子的基礎上深入)

  1. 實現刪除同步
    在上一個例子中,我們實現了數據同步。但是經過測試,我發現這個同步只能實現增加數據的同步,如果輸入表的數據被刪除,更新表卻不會實現同步刪除。所以,這裏需要加一個“執行sql腳本”實現刪除的同步,如下圖在這裏插入圖片描述

  2. 使用定時器進行同步
    當然,在實際項目中,如果我們接數據不可能一直手動操作,肯定需要設立定時器定時接受數據,所以我們可以設立一個定時器。
    首先新建一個作業在這裏插入圖片描述
    然後在通用裏將“start”和“轉換”拖到右邊空白處並且連接起來
    在這裏插入圖片描述
    給“start”定時,爲了方便查看,我這裏定時3秒爲一次執行動作
    在這裏插入圖片描述
    然後再賦予“轉換”事件,這個事件1就是我前面同步事件
    在這裏插入圖片描述
    然後點擊上方的三角執行即可!!!

  3. 利用.bat文件在程序外啓動定時器
    由於我們在數據同步接受的時候,不可能一直開着軟件接收數據,所以可以考慮弄一個批處理文件進行定時器啓動。而kettle提供了kitchen.bat啓動定時器文件。所以,我們只要新建一個.bat文件,然後切換目錄到kitchen.bat文件底下,調用kitchen.bat即可,如下所示:

d: 
cd D:\kettle\pdi-ce-5.4.0.1-130\data-integration
kitchen /file:D:\kettle\workspace\job1.kjb

由於這將會啓動一個doc串口,如果想要隱藏窗口可以在.bat文件頭部加入以下代碼即可:

@echo off
 
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
::

如下圖所示
在這裏插入圖片描述
四、實現oracle同步到mysql表(在上一個例子的基礎上深入)

  1. 添加mysql數據庫
    跟oracle一樣,雙擊DB連接,然後配置相關信息,如下圖:在這裏插入圖片描述
  2. 創建新的“插入/更新”
    這裏如果需要將oracle表數據同步到mysql表數據,只需將oracle的“插入/更新”替換爲mysql的即可。
    在這裏插入圖片描述
    在這裏插入圖片描述
    然後點上方三角運行即可!!!

五、 關於表輸出的使用
通過使用,我發現好像有kettle有三種表述出方式,分別是:
插入/更新、表述出、sql腳本關係。
當然,他們之間還是有一定區別的,就目前使用經驗,本人稍微總結了一點使用區別。

  1. 插入/更新(這裏就不截圖了,前面有介紹):
    1.1. 不執行任何更新:如果被選擇,則不執行任何更新,只允許插入。
    1.2. 用來查詢的關鍵字:可以通過定義關鍵字來決定插入或者更新
    1.3. 更新:可以指定那些字段不進行更新。

  2. 表輸出:沒有更新操作,如下圖
    在這裏插入圖片描述

  3. sql腳本
    就是自定義sql進行實現sql操作,比其他兩個靈活。如下圖:
    在這裏插入圖片描述

完整例子看分享2!!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章