ora2pg主要功能:
Ora2Pg可用于任何反向工程Oracle数据库,到巨大的企业数据库迁移或简单地复制一些Oracle,数据导入PostgreSQL数据库。它非常易于使用,而且不需要任何Oracle数据库知识,需要知道其连接到Oracle数据库所需的参数。
Ora2pg总体描述:
1.安装ora2pg,安装其所需要的依赖包,以及Perl模块等。
2.配置ora2pg.conf配置文件,此文件主要用于配置导出导入数据库数据,以及导出数据范围。
3.执行命令,导出文件或者直接导入目标数据库中
Ora2pg工作过程:
Ora2Pg中包括一个Perl脚本(Ora2Pg)和一个Perl模块(Ora2Pg.pm),你只需要修改配置文件Ora2Pg.conf中连接Oracle数据库的DSN设置和任意的一个模式名称。做完了这些然后你只需要设置一下你想要输出的对象类型,它提供的类型有:约束表、视图、表空间、序列、索引、触发器、授权、函数、存储过程、包封装、分区和数据。默认情况下Ora2Pg会导出一个文件,你可以通过psql客户端将其导入到PostgreSQL数据库中,不过你也可以通过设置PostgreSQL数据库的DSN直接导入。你可以通过配置ora2pg.conf的配置选项来完全控制导出什么以及如何去导出。
Ora2pg特性:
导出整个数据库模式(表、视图、序列、索引),以及唯一性,主键、外键和检查约束。
导出用户和组的授权/权限。
导出筛选的表(通过制定表明)。
导出Oracle模式到一个PostgreSQL(7.3以后)模式中。
导出预定义函数、触发器、程序、包和包体。
导出范围和列表分区。
导出所有的数据或跟随一个WHERE子句。
充分支持Oracle BLOB对象作为PG的BYTEA。
导出Oracle视图作为PG表。
导出定义的Oracle用户格式。
提供关于转换PLSQL码为PLPGSQL的基本帮助(仍然需要手工完成)。
可在任何平台上工作。
Ora2Pg尽力将Oracle数据库转换到PostgreSQL中,但是仍需一部分的手动工作。Oracle特定的PL/SQL代码生成函数、过程 和触发器时必须进行审查,以便匹配PostgreSQL的语法Ora2pg支持的导出对象:
这是允许导出的不同的格式,默认是TABLE:
TABLE:提取所有包括索引、主键、唯一键、外键和检查约束的表。
VIEW:提取视图。
GRANT:提取在所有对象中转换为Pg组、用户和权限的用户。
SEQUENCE:提取所有的序列以及上一个位置。
TABLESPACE:提取表空间。
TRIGGER:提取通过动作触发的被指定的触发器。
FUNCTION:提取函数。
PROCEDUERS:提取存储过程。
PACKAGE:提取包和包主体。
DATA:提取数据,生成INSERT语句。
COPY:提取数据,生成COPY语句。
PARTITION:提取范围和列表分区。
TYPE:提取Oracle用户自定义的格式。
(以下两条是10.0新加的)
FDW:提取外部数据封装表
PARTITION:提取作为快照刷新视图所建立的视图Ora2pg数据类型转换对照:
ORACLE: |
POSTGRESQL: |
DATE |
timestamp |
LONG |
text |
LONG RAW |
bytea |
CLOB |
text |
NCLOB |
text |
BLOB |
bytea |
BFILE |
bytea |
RAW |
bytea |
ROWID |
oid |
FLOAT |
double precision |
DEC |
decimal |
DECIMAL |
decimal |
DOUBLE PRECISION |
double precision |
INT |
integer |
INTEGER |
integer |
REAL |
real |
SMALLINT |
smallint |
BINARY_FLOAT |
double precision |
BINARY_DOUBLE |
double precision |
TINESTAMP |
timestamp |
XMLTYPE |
xml |
BINARY_INTEGER |
integer |
PLS_INTEGER |
integer |
TIMESTAMP WITH TIME ZONE |
timestamp with time zone |
TIMESTAMP WITH LOCAL TIME ZONE |
timestamp with time zone |
这些数据类型的转换可根据实际情况用户自己指定,通过ora2pg.conf中的DATA_TYPE指定。如果未指定,默认转换类型如上表。