如何使用OMCS上的ODI 12C连接AWS上的Mongo DB并提取数据?
刚好之前帮团队搞定过ODI 12C连接AWS MongoDB的需求,给你梳理下完整步骤,大部分场景下完全不用写自定义代码,除非你有特别复杂的定制化需求。
前提准备
- 先搞定驱动:ODI是通过JDBC连接MongoDB的,所以需要把MongoDB官方的JDBC驱动包(比如
mongodb-driver-sync或者对应的JDBC适配包)放到ODI的两个lib目录里:<ODI_HOME>/oracledi/agent/lib和<ODI_HOME>/oracledi/client/lib,放完之后重启ODI客户端和代理,不然驱动加载不出来。 - 网络权限要打通:确保AWS上的MongoDB实例的安全组允许OMCS上的ODI服务器访问,开放MongoDB的默认端口27017(如果是自定义端口就开对应的),同时把ODI服务器的IP加到MongoDB的IP白名单里,还要确认MongoDB的用户名密码有对应数据库的读取权限。
具体配置步骤
1. 创建MongoDB数据服务器
打开ODI Studio,切换到Topology视图:
- 展开
Physical Architecture->Technologies,找到MongoDB(如果没看到,检查下ODI是否启用了MongoDB技术,一般默认是支持的) - 右键点击MongoDB,选
New Data Server:- 名称随便起,比如
AWS_MongoDB_Prod - 切换到JDBC标签页,填写JDBC URL:如果是MongoDB Atlas集群,用
mongodb+srv://<用户名>:<密码>@<集群端点>/<目标数据库名>?retryWrites=true&w=majority;如果是单实例,用mongodb://<用户名>:<密码>@<实例IP>:<端口>/<目标数据库名> - 填入MongoDB的认证用户名和密码
- 点击
Test Connection,能连上就说明没问题,保存。
- 名称随便起,比如
2. 创建物理架构
在刚才创建的数据服务器上右键,选New Physical Schema:
- 选择你要访问的MongoDB数据库名称
- 绑定默认的上下文(比如
Global) - 保存即可。
3. 创建逻辑架构
切换到Logical Architecture视图:
- 找到MongoDB节点,右键选
New Logical Schema - 关联刚才创建的物理架构,选择对应的上下文
- 保存。
4. 抽取数据的配置
切换到Designer视图:
- 创建一个新的
Model,技术选择MongoDB,关联刚才的逻辑架构 - 右键点击这个Model,选
Reverse Engineer,可以选择要导入的集合,ODI会自动生成对应的数据模型 - 然后创建
Mapping,把MongoDB的集合作为源,拖到Mapping画布上,再连接到你的目标(比如Oracle数据库),通过可视化界面配置字段映射、过滤条件等,ODI会自动生成抽取逻辑,直接运行就行。
是否需要编写自定义代码?
大部分常规场景(比如读取整个集合、按条件过滤、简单字段映射)完全不需要写自定义代码,ODI的可视化工具和反向工程已经能覆盖。但如果遇到以下情况,可能需要定制:
- 处理MongoDB的复杂嵌套文档(比如多层嵌套对象、数组的特殊解析):可以在Mapping里用Expression或者自定义User Function,甚至写Groovy/Java代码来处理
- 需要执行复杂的MongoDB聚合查询:可以在源数据存储里用Custom SQL(注意是MongoDB的查询语法,不是SQL)来编写自定义查询
- 特殊的认证或加密逻辑:这种情况极少,可能需要扩展JDBC连接,但一般AWS MongoDB的默认认证方式ODI都支持。
内容的提问来源于stack exchange,提问作者Mitesh S
相关产品推荐
相关产品推荐

