ora2pg的安装以及使用

 
是什么?
    Oracle到PostgreSQL迁移工具,自动将Oracle和MySQL数据库转换为PostgreSQL 。
为什么?
    用于将Oracle中的表,数据,存储过程,视图等等对象转换、导入到PG数据库中。    
怎么做?
    1.环境信息
        OS:Windows 10
        ora2pg:v22.0
        Perl:5.32+
        instantclient:19.11
    2.安装依赖
        perl,http://strawberryperl.com/
    3.安装ora2pg以及相关lib包
        解压安装包
        perl makefile.pl
        gmake && gmake install
        cpan
        get dbi
        install dbi
        get DBD::Oracle
        install DBD::Oracle
    4.在环境变量中添加Oracle客户端地址
    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
posted @ 2021-08-03 00:02  Anderson_Question  阅读(1606)  评论(0编辑  收藏  举报