使用ORA2PG遷移數據庫

 

首先需要安裝 Perl 和 PostgreSQL數據庫,還需要安裝Oracle的客戶端。我都是在本機 Windows 系統上測試的,對應的文件名:

ActivePerl-5.26.3.2603-MSWin32-x64-a95bce075.exe
postgresql-10.6-1-windows-x64-binaries.zip

軟件裝完進入Perl 的bin目錄,命令安裝Perl 的 Oracle驅動,命令有兩個:

C:\Perl64\bin>cpan
Loading internal null logger. Install Log::Log4perl for logging messages

cpan shell -- CPAN exploration and modules installation (v2.18)
Enter 'h' for help.

cpan> get DBD::Oracle
Fetching with LWP:
http://ppm.activestate.com/CPAN/authors/01mailrc.txt.gz
...

cpan> install DBD::Oracle
Running install for module 'DBD::Oracle'
  ZARQUON/DBD-Oracle-1.76.tar.gz
....

完了參考 Windows下Postgresql數據庫的下載與配置方法 配置PG數據庫。

再就是按照 ora2pg,這個只需要下載解壓即可。剩下的就是數據庫導出的腳本文件。由於 TYPE 一次只支持一個值,所以如果有多個數據庫對象導出,就要寫多個這樣的腳本文件。比如我導出存儲過程的腳本:

ORACLE_HOME F:\app\client\Lenovo\product\12.1.0\client_1
ORACLE_DSN dbi:Oracle:host=192.168.1.222;sid=VINCI;port=1521
ORACLE_USER TEST_CURIE
ORACLE_PWD TEST_CURIE
SCHEMA TEST_CURIE
USER_GRANTS 0
DEBUG 0
ORA_INITIAL_COMMAND
EXPORT_SCHEMA 0
CREATE_SCHEMA 1
COMPILE_SCHEMA 0
TYPE PROCEDURE
PG_VERSION 10.6-1
OUTPUT F:\software\export\output_proc.sql

如果需要導出整個數據庫表,那麼將 TYPE 的值改爲 DATA 即可。如果像我遇到的情況一樣,就是數據庫的記錄非常多,那麼可以寫多個腳本文件,每個文件只導出指定的表記錄,則需要把 TYPE 的值改爲 INSERT(或 COPY),然後增加一個 ALLOW 屬性,它的值可以是若干個表以逗號或者空格隔開的表名。如下面這個只導出一個 DRUG_EXPOSURE 的表記錄到 output_data_drug_exposure0.sql 文件。多個這樣的腳本可以同時在多個 dos 下執行。

ORACLE_HOME F:\app\client\Lenovo\product\12.1.0\client_1
ORACLE_DSN dbi:Oracle:host=192.168.1.222;sid=VINCI;port=1521
ORACLE_USER TEST_CURIE
ORACLE_PWD TEST_CURIE
SCHEMA TEST_CURIE
USER_GRANTS 0
DEBUG 0
ORA_INITIAL_COMMAND
EXPORT_SCHEMA 0
CREATE_SCHEMA 1
COMPILE_SCHEMA 0
TYPE INSERT
ALLOW DRUG_EXPOSURE
PG_VERSION 10.6-1
OUTPUT F:\software\export\output_data_drug_exposure0.sql

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章