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