用kettle 進行數據庫的遷移--DB2 遷移到 mysql

1、前言

開始給用戶提供的整套系統是部署在WAS服務器和DB2數據庫上的,因爲WAS和DB2都屬於IBM收費產品,根據用戶需求,爲了節省這筆開銷,想使用免費開源的數據庫和Tomcat服務器。因而數據庫選擇了MariaDB。這
就涉及到,在不動系統代碼的狀況下,怎樣直接將DB2數據庫的表結構、數據、主鍵、索引等遷移到MariaDB上。接着這個苦差事就落到我頭上了。第一次作這類型的工做,在網上找各類數據庫遷移的工具,最終選擇了kettle這款開源的工具,通過幾天下來,終於完成了,特此記錄,方便之後查閱。java

2、kettle 的使用

Kettle是一款國外開源的ETL工具,純java編寫,能夠在Window、Linux、Unix上運行,數據抽取高效穩定。
1.新建一個job,建立兩個DB鏈接:source、target(源數據庫和目標數據庫鏈接),在菜單中找到【複製多表嚮導】,點擊進行相關操做:
Centermysql

2.選擇源數據庫和目標數據庫
Centersql

3.選擇所需遷移的表
4.編輯生成的job文件名:qy.kjb,和文件目錄,編輯好後【Finish】
5.運行qy.kjb,可在test2數據庫中看到成功生成遷移來的表。
Center數據庫

3、在使用過程當中遇到的問題

  • 上述方法在數據庫遷移過程當中沒法把主鍵和索引進行遷移服務器

解決方法:在DB2的系統表中,查找到主鍵和索引全部的信息。而後拼接成mysql建立主鍵和索引的腳本
例如:
//從db2 的系統表中查詢到主鍵信息的sqleclipse

select * from SYSCAT.KEYCOLUSE;

//拼接成mysql 建立主鍵的sql工具

select 'ALTER TABLE '|| Tablename ||' ADD PRIMARY KEY' || ' (' || ColumnName ||');'  from SYSCAT.KEYCOLUSE where TABSCHEMA='XX';

此時會生成mysql 的執行腳本,將腳本放入到mysql 中,就能夠建立全部遷移過來表結構的主鍵測試

索引也是同理。只不過DB2 系統表中的索引是spa

select * from syscat.indexes;
  • 在執行遷移的時候,有些job 失敗,看生成的sqlcode

句有中unknown類型。這個緣由主要是DB2的時間類型直接轉到mysql中沒有與之對於的類型, 因此須要

把UNKNOWN ->DATETIME。
通過測試,此類型在遷移成功後,能正常的插入數據。

4、若是想更好的利用kettle能夠將kettle的源碼導入到eclipse中部署啓動,這是純java代碼開發的開源工具。很是有研究價值!

剛開始研究kettle,,未完 待續。。。

相關文章
相關標籤/搜索