informatica同构与异构

随声附和 提交于 2019-12-23 04:09:18


1.同构需求

1.1 将emp表和dept表进行内连接

要实现的结果:
在这里插入图片描述
1.导入源表:emp表和dept表。
2.定义目标表:将emp表重命名,加入2个dept的字段,生成sql语句,在edw用户下创建表。
在这里插入图片描述
在这里插入图片描述
3.创建映射:
删除原本连着各自源表的源限定符,新建一个源限定符同时选择两张源表。
在这里插入图片描述
设置属性为两张表的deptno相等。
在这里插入图片描述
在端口我们只保留emp的deptno字段,删除dept的deptno字段,保存映射。
在这里插入图片描述
4.创建任务和工作流,保存,执行,查看结果。
在这里插入图片描述
在这里插入图片描述

1.2 将emp表和dept表进行右连接

要实现的效果:
在这里插入图片描述
我们可以在映射中的源限定符的属性中定义sql语句。
在这里插入图片描述
端口的字段顺序要和定义的sql语句的查询字段的顺序一致。
在这里插入图片描述
保存映射,重新执行工作流。
但是最终只返回14条数据,我们希望的是右连接返回所有20条数据,查看错误说无法将null写入到empno字段。
在这里插入图片描述
原因是我们的源表emp和dept设置了empno为主键,所以需要先删除主键标志。
在这里插入图片描述
目标表查看deptno在非空上也打勾了,需要去掉这个勾,然后重新执行sql语句,在edw用户下重新创建表格。
在这里插入图片描述
重新刷新映射,创新创建任务和工作流,执行后,发现没有问题了。
在这里插入图片描述
查看edw用户的数据导入情况也正常了。
在这里插入图片描述

2.异构需求

2.1 使用oracle的emp表和mysql的dept表进行连接

1.从mysql中导入dept表
重新定义odbc驱动,去连接mysql。选择系统DSN,如果弹出警告说非管理权限,就使用管理员模式重新打开D客户端。
在这里插入图片描述
点击确定后,设置连接mysql,以及dept表所在的数据库
在这里插入图片描述
ODBC源选择刚刚创建的mysql,用户名是连接mysql的用户名和密码。
然后导入mysql的dept表。
在这里插入图片描述
在这里插入图片描述
2.定义目标表:edw_emp_join_dept_yigou
3.创建映射:
使用连接器转换组件joiner来关联两个不同数据库的源表。
在这里插入图片描述
数据类型不一致,需要转换数据类型。将mysql的deptno的数据类型转换成和oracle的deptno一致,使用表达式组件
在这里插入图片描述
重新使用连接器转换组件joiner来关联两个不同数据库的源表,设置oracle的deptno和mysql的deptno相等。
在这里插入图片描述
连接目标表,保存映射。
在这里插入图片描述
4.创建任务和工作流:
创建任务,新建mysql的dept表的源表对象。
在这里插入图片描述
双击任务,分别编辑源表和目标表所属的表对象。
在这里插入图片描述
创建工作流,保存,执行后,在edw用户下就能看到异构数据库连接的数据。
在这里插入图片描述
在这里插入图片描述

3.同构与异构总结

同构是两个源表连接一个源限定符。
异构是两个源表分别连接源限定符,再通过连接器转换组件将两者连接。
在这里插入图片描述
表的连接方式
在这里插入图片描述
主从表可以在转换器组件中自定义更换
在这里插入图片描述

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!