ora2pg是一款可以方便將oracle內的數據導出並轉換成pgsql格式的工具。它支持導出表,視圖,序列等,十分強大,下面介紹它的安裝與使用:
安裝ora2pg需要以下三個軟件支持
1)、DBD::Oracle
2)、DBI
3)、Ora2pg
要求:perl版本5.8以上
查看perl版本
perl -v


1、首先安裝依賴包
yum install perl-DBI perl-DBD-Pg perl-ExtUtils-MakeMaker gcc wget http://search.cpan.org/CPAN/authors/id/P/PY/PYTHIAN/DBD-Oracle-1.74.tar.gz tar -zxvf DBD-Oracle-1.74.tar.gz cd DBD-Oracle-1.74 source /home/oracle/.bash_profile perl Makefile.PL -l make make install
2、安裝 ora2pg包
下載地址:https://sourceforge.net/projects/ora2pg/files/?source=navbar
解壓文件
tar -jxvf ora2pg-18.2.tar.bz2 cd ora2pg-18.2 perl Makefile.PL make make install
默認安裝在
/usr/local/bin/
目錄下
3、配置
ORACLE_DSN dbi:Oracle:host=192.168.0.153;sid=orcl ORACLE_USER system ORACLE_PWD highgo SCHEMA TEST (注意要大寫,否則匹配不到) TYPE TABLE DATA 設置導出的內容
allow emp 導出TEEST下面的emp表 如果需要讓數據自動導入到PostgreSQL中,則需要同時配置關於連接PostgreSQL的相關信息,配置類似上面Oracle的配置,如下: PG_DSN dbi:Pg:dbname=test_db;host=192.168.100.106;port=5432 PG_USER test PG_PWD highg
4、使用
ora2pg -c /etc/ora2pg.conf
vim /etc/ora2pg/ora2pg.conf -d | --debug :啟用詳細輸出。 -h | --help :打印出簡單的幫助信息。 -v | --version :顯示Ora2Pg的版本。 -c | --conf file :使用另一個替代的配置文件,默認是/etc/ora2pg/ora2pg.conf。 -l | --log file :使用一個日志文件,默認是標准輸出。 -o | --out file :指定導出的SQL腳本文件的路徑,默認是當前目錄下。 -t | --type export :指定導出格式。覆蓋配置文件中指定的TYPE。 -p | --plsql :啟用PLSQL到PLPSQL碼的轉換。 -s | --source dsn :設置Oracle DBI數據源。 -u | --user user :設置連接Oracle的用戶名。 -w | --password pass :設置Oracle用戶密碼。 -n | --namespace schema :設置用於提取的Oracle模式名稱。 -b | --basedir dir :設置默認的輸出文件目錄,輸出的文件將被保存到該目錄。 -x | --xtable relname :用於顯示給定表的列名,僅在TYPE為SHOW_COLUMN時使用。 -f | --forceowner :如果設置為1將促使Ora2Pg設置表和序列的所有者。如果將其值設置為一個用戶名會被設定為對象的所有者。 --nls_lang code :設置Oracle NLS_LANG客戶端編碼。 --client_encoding code :設置PostgreSQL客戶端編碼。 -i | --input_file file :文件包含在沒有Oracle數據庫連接發起時Oracle PL/SQL代碼的轉換。
如果出現以下錯誤
請不要驚慌,耐心等待即可
5、將導出的文件導入pgsql數據庫
首先創建一個test_db數據庫,再創建一個test用戶,在test_db數據庫下以超級用戶創建一個schema,並將該schema的權限者設為test,最后以test用戶在test_db數據庫下導入數據腳本:
$ psql postgres=# CREATE DATABASE test_db; postgres=# CREATE USER test password ‘highgo’; postgres=# \c test_db test_db=# CREATE schema test authorization test; test_db=# \c test_db test test_db=> \i /root/output.SQL