程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 拿Eclipse RCP做個自己的數據庫遷移工具

拿Eclipse RCP做個自己的數據庫遷移工具

編輯:關於JAVA

我的產品是被要求運行在多種常見數據庫平台下(mysql/sqlserver/oracle)下,在開發中需要嚴格遵循相關的規范以確保能夠實現跨數據庫類型的要求.(相關的要點在我的"你的系統真的因為使用hibernate就可以適應各種數據庫嗎? "一文中已提及).在初始開發時有一個問題是比較困擾我的團隊的,我們開發的時候必定是基於某個特定的數據庫開發的(比如mysql),但在測試階段是需要在不同的數據庫平台下進行兼容性測試,由於開發過程中數據庫結構與種子數據變化非常快,全部編寫sql方式非常浪費時間,如何能找到一種高效的數據庫相互遷移的工具,是我們當時所急需的解決方案.

其實也沒啥選擇,比較常用的數據庫遷移工具就是Sqlserver自帶的DTS,這玩意在sql server數據庫間進行數據導入/導出時倒確實比較好用,在不同數據庫類型進行操作時,就會出多多問題,如:類型轉換需手工指定/導出字段有雙引號...

所以最後的選擇就是自己做一個DTS好啦,思路如下:

1、選擇源數據庫連接與目標數據庫連接

2、根據源數據庫遍歷所有數據庫對象(表),做為基准

3、刪除目標數據庫所有表外鍵及索引、刪除所有種字數據(根據約定)數據、字段均允許null

4、遍歷源數據庫中所有表,為目標數據庫修改結構(如增刪字段,字段改類型、大小)

5、將源數據庫中種子數據表數據拷貝至目標數據庫中

6、根據源數據庫為目標數據庫中的表創建外鍵及索引、設置是否允許為null

7、搞掂!

完工後總代碼量不過兩千行(因為需考慮不同數據庫的SQL Dialet,否則應該更少)

用戶界面基於Eclipse RCP技術開發,使用JFace Wizard向導(如果不是想用向導的話,你可以用SWT來做)對話框獲得源數據庫與目標數據庫的連接內容,並在用戶點擊完成按鈕後,在進度條中提示用戶執行情況.用了這個玩意以後,測試同事的數據庫兼容性測試就再也不用來煩我們開發組啦!真是爽呀!當然很多喜歡折騰的客戶(比如突然在哪裡聽說oracle是大型數據庫,非讓你幫他弄過去)此類朝三暮四也就自然不在話下啦!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved