ora2pg的安装以及使用
是什么?
Oracle到PostgreSQL迁移工具,自动将Oracle和MySQL数据库转换为PostgreSQL 。
为什么?
用于将Oracle中的表,数据,存储过程,视图等等对象转换、导入到PG数据库中。
怎么做?
1.环境信息
OS:Windows 10
ora2pg:v22.0
Perl:5.32+
instantclient:19.11
2.安装依赖
3.安装ora2pg以及相关lib包
解压安装包
perl makefile.pl
gmake && gmake install
cpan
get dbi
install dbi
get DBD::Oracle
install DBD::Oracle
4.在环境变量中添加Oracle客户端地址
![](https://img2020.cnblogs.com/blog/1371047/202108/1371047-20210802235941571-604419114.png)
5.调整ora2pg配置文件
默认安装地址:C:\ora2pg
通过cmd工具调用:ora2pg -c c:\ora2pg\ora2pg_conf.dist -d
其中-c是指定配置文件,-d是要求输出debug日志,其他的选项可以通过ora2pg -h查看。
6.配置文件常用配置解析
配置主要是在以下三个阶段生效的,数据来源处配置,目的端配置,转换规则配置。
配置文件路径:c:\ora2pg\ora2pg_conf.dist
-
数据来源处Oracle相关配置:
客户端地址,ORACLE_HOME C:/Users/XXX/Desktop/instantclient_19_11
ORACLE_DSN dbi:Oracle:host=XX.XX.XX.XX;sid=XXX;port=XXX
ORACLE_USER XXX
ORACLE_PWD XXX
-
目的端配置:
输出文件名称,OUTPUT pg_data.sql
PG_DSN dbi:Pg:dbname=ceov_test;host=localhost;port=5432
PG_USER postgres
PG_PWD root
-
转换规则配置:
TYPE
该项配置主要是为了说明迁移的类型,而非数据类型。目前支持的导出类型比较实用的有这么几种,TABLE,SEQUENCE,TRIGGER,PROCEDURE,INSERT,可以使用不同的类型实现导出不同的脚本实现表,序列,触发器,存储过程,插入语句。
PG_NUMERIC_TYPE,PG_INTEGER_TYPE,DEFAULT_NUMERIC,DATA_TYPE
上述几个配置都是为了解决Oracle转换到PG数据库的时候比较常见的数字类型的转换问题,Oracle中的numeric在转换到PG数据库的时候会根据精度转换为对应的PG内部类型,例如real或float,但是我们不希望上述行为发生,可以通过依次设置0,0,numeric,就可以实现原数据类型的迁移,但是会丢失一些number类型的精度。最后的DATA_TYPE是全手动控制的oracle数据类型和pg数据类型的映射关系,如以下示例所示
DATA_TYPE VARCHAR2:varchar,NVARCHAR2:varchar,DATE:timestamp