本文介绍如何通过ODI从PostgreSQL同步数据到Oracle。

1、定义物理体系结构

1.1 创建新的PostgreSQL数据服务器
Topology->Physical Architecture->PostgreSQL,右击选择New Data Server,在Definition对话框输入相关信息,如下图:
ETL PostgreSQL in Oracle ODI 12c_第1张图片
在JDBC对话框输入如下信息,如下图:

点击保存。点击“Test Connection”进行验证。
1.2 创建PostgreSQL的物理方案
Topology->Physical Architecture->PostgreSQL->“PostgreSQL_RHNDB”,在Definition对话框输入名称以及数据库,点击保存。
ETL PostgreSQL in Oracle ODI 12c_第2张图片
这里注意,database选择rhndb,schema一定要选择public。最后点击“保存”。

2、定义逻辑体系结构

Topology->Logical Architecture->PostgreSQL,右击选择“New Logical Schema”,在definition对话框选择对应的物理方案,点击保存。
ETL PostgreSQL in Oracle ODI 12c_第3张图片

3、定义PostgreSQL模型

Designer->Models->New model,如下图所示:
ETL PostgreSQL in Oracle ODI 12c_第4张图片
点击“保存”。接着点击“Reverse Engineer”,同步PostgreSQL的表结构。
之前已经同步了一份Oracle数据库表结构,这里直接使用即可。如果没有,还需按照上述步骤创建。

4、创建项目

Designer->Projects->New Project,输入名称,点击保存。
ETL PostgreSQL in Oracle ODI 12c

5、创建映射

Designer->Projects->PostgreSQL_To_Oracle->Mapping,右击选择“New Mapping”,然后拖动源表和目标表进行链接,如下图:
ETL PostgreSQL in Oracle ODI 12c_第5张图片
这里的知识模块选择“LKM SQL to SQL (Built-In).GLOBAL”,如下图所示:
ETL PostgreSQL in Oracle ODI 12c_第6张图片
注意:
A、如果遇到PostgreSQL的字段类型和Oracle的字段类型不匹配时,在Model里编辑源表和目标表的字段类型即可。
B、在映射图中的逻辑选项里,设置目标表的target的Integration Type为Incremental Update即可(默认为追加),如下图:
ETL PostgreSQL in Oracle ODI 12c_第7张图片
C、千万别忘记点击“保存”。

6、验证映射

点击图中箭头所示的图标进行验证,如果报错根据实际情况进行修改。
ETL PostgreSQL in Oracle ODI 12c_第8张图片