使用ORA2PG迁移数据库

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Allen_jinjie/article/details/86666095

首先需要安装 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

猜你喜欢

转载自blog.csdn.net/Allen_jinjie/article/details/86666095