多平臺向Postgresql 遷移

最近有個工做要把 一個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 會把和 關鍵字 衝突的列名 加上 [] 。遷移的時候就出錯了

同時這個工具能夠遷移多個平臺。以下:

相關文章
相關標籤/搜索