搬來的東西,太實用了
kettle實現整庫遷移
1 背景
- 庫與庫之間做數據同步
- 結構不變
- 原始是數據庫和目標數據庫都是MySQL
2 思路
鑒於是整個庫進行數據同步,表結構和表名都不需要變化。因此,在轉換過程中並不需要做太多的清洗工作,主要是在目標數據庫建表和導入操作。需要注意點:
- 1,對於原始庫中新的數據表需要在目標庫中新建
- 2,數據需要進行全量更新
整體的工作流如下:
- 獲取表名轉換處同時獲取原始數據庫中的表名和建表語句,備用
- 循環建表和同步工作處是對所有表的循環處理
2.1 獲取表名

- 必須使用復制記錄到結果控件來保存記錄
- 獲取表名處注意勾選sql語句字段
- 該轉換得到了數據庫里面所有表的名字和所有建表語句,備用,后面賦值到相關變量中供其他控件使用
2.2 循環建表和同步
2.2.1 如何設置循環

- 雙擊循環建表和同步job,勾選執行沒有一個輸入。
2.2.2 建表和同步

- 這是一個完整的job,在整個job流中的循環建表和同步循環的就是這個job
- 這個job主要是獲取變量-建表-同步數據
2.2.1 獲取變量

- 從以前的結果獲取記錄,獲取的就是2.1步記錄中的結果
- 設置環境變量時,直接選擇獲取字段就行,不用手動輸入,變量活動類型默任
2.2.2 建表

- 注意勾選變量替換
- 用${SQL_RESULT}來引用上一步設置的變量
2.2.3 單個表同步

- 表輸入時sql語句中的表名用變量代替
- 表輸出時注意勾選剪裁表和批量導入
3 數據庫連接共享
因為在這整個的工作中,包含了4個ktr和兩個job,數據庫連接在多個地方出現,因此將數據庫連接設置成共享的,避免重復設置數據庫連接
這是已經共享完成的,在數據庫連接上右鍵鼠標,在彈出框中就可以看見共享/停止共享的按鈕
