最近有個工做要把 一個SqlServer 遷移到 Postgresql 平臺上,上網搜了搜,EnterpriseDB在這塊作了不少工做, html
EnterpriseDB 的 Postgres Plus Advanced Server管理工具中有一個 mogiration toolkit工具。 java
這裏安裝的是9.2版本。安裝後在 bin 目錄下有個edb-migrationtoolkit.jar,這是這個工具的主要程序,經過java 啓用jar包進行遷移。其中涉及到三塊: linux
1.bin目錄下 edb-migrationtoolkit.jar 遷移主程序 sql
2.bin目錄下runMTK.bat 遷移命令腳本,linux下是runMTK.sh,內容以下,這裏有些改動 shell
@echo off @REM ---------------------------------------------------------------------------- @REM -- @REM -- Copyright (c) 2004-2012 - EnterpriseDB Corporation. All Rights Reserved. @REM -- @REM ---------------------------------------------------------------------------- "D:\dev\Java\jre7\bin\java.exe" -Dprop=..\etc\toolkit.properties -jar edb-migrationtoolkit.jar -sourcedbtype sqlserver -targetdbtype postgresql -targetSchema public dbo %*說明 :
-sourcedbtype sqlserver -targetdbtype postgresql -targetSchema public dbo
上面的配置指定了 源數據庫類型,和目標數據庫類型。 -targetSchema 指定數據庫架構,public表示 postgresql 數據庫架構,dbo表示 sql server的數據庫架構 數據庫
更多的配置和遷移參數 使用命令 runMTK -help。 架構
3.etc目錄下toolkit.properties文件,遷移時源數據庫和目標數據庫的鏈接配置,java的鏈接配置 oracle
安裝的時候默認的是遷移 oracle到postgresql 這裏須要改下。同時因爲edb-migrationtoolkit.jar程序中採用的是jtds的 sql server驅動,因此更改以下
工具
SRC_DB_URL=jdbc:jtds:sqlserver://localhost:1433;databasename=test SRC_DB_USER=sa SRC_DB_PASSWORD=123456 TARGET_DB_URL=jdbc:postgresql://localhost:5432/test TARGET_DB_USER=postgres TARGET_DB_PASSWORD=123456
須要兩個額外的 東西,SqlServer 的 jdbc驅動 和postgresql 的jdbc驅動。 sqlserver
http://www.sql-workbench.net/manual/jdbc-setup.html 這個頁面查看全部數據庫的java 驅動,比較全面。
注:在安裝Postgres Plus Advanced Server 的mogiration toolkit模塊的時候會自動安裝jre 在根目錄下,但這個版本比較低,仍是java 5的。因此若是使用這個jre 的java啓動 遷移的時候下載的對應數據jdbc驅動必須支持java5固然。能夠採用本身安裝的高版本jre,同時下載驅動放在jre/lib/ext 目錄下。
這個工具仍是比較好用的,比較智能化,無需其餘的操做。固然在遷移的時候會遇到一些小問題,好比各個數據庫中專有的東西。例如 sql server 會把和 關鍵字 衝突的列名 加上 [] 。遷移的時候就出錯了
同時這個工具能夠遷移多個平臺。以下: