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代碼的轉換。

如果出現以下錯誤

如何在容器中安裝pg_db數據庫

請不要驚慌,耐心等待即可

 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