Kettle:Oracle多表格批量同步資料=》mysql

newknight發表於2018-08-02

Oracle 多表格批量同步資料=》MYSQL

場景

多張Oracle表格,通過輪詢自動同步資料到mysql。

避免每個Oracle表格資料=》mysql都做一個轉換,產生大量轉換,難以管理和調整。


主要通過kettle變數,迴圈,欄位名自動匹配,以及Oracle、mysql資料字典來實現。

初步完成Oracle表格=》mysql的初始化同步,後續增加增量同步,DDL同步,異常處理操作。



基本步驟

1. 在mysql裡查詢test庫下有哪些表格,輸出到結果記錄

2. 從結果記錄裡面每次取一行,設定變數

3. 針對每次使用的變數值,去oracle資料來源裡生成對應的表輸入(通過變數生成)

4. 把變數賦給表輸出元件的表名

5. 表輸出其他內容不做制定,因為表名和欄位都和源端oracle是一樣的

6. 針對每個“輸出到結果記錄”做迴圈,插入每個oracle表格資料到mysql

 

總體流程

步驟1:Tables in mysql(Job)

步驟2:insert into mysql(Job)

步驟2.1 set tablename(tranfomation)

步驟2.2:insert data into mysql(tranfomation)

 

後續問題:

l    如何做增量的資料遷移

1.        針對oracle這端有時間欄位的表格

2.        記錄每次遷移的系統時間

3.        增量時間是》上次系統時間 and 《本次系統時間

每張表格時間欄位名字可能不一樣

所以要維護一張表格時間欄位記錄(表名,時間欄位名)

4.        每次生成表輸入時,也參照生成表名變數的方式,獲取時間欄位名,用在表輸入的sql裡

5.        表輸出這端,會複雜一些,包括刪除、插入、更新等等操作

l    無時間欄位或流水號的表格同步

l   如何做DDL同步:

1.       獲取Oracle和mysql的資料字典

2.       比較表名和欄位名

3.       比較欄位資料型別

4.       注意資料型別對映(如oracle的varchar2《=》MySQL的varchar,oracle的data《=》MySQL的timestamp)

5.       Mysql端的表格和欄位同步


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10009036/viewspace-2169029/,如需轉載,請註明出處,否則將追究法律責任。

相關文章