ETL(十):异构关联(联接器转换组件的使用)
1、同构关联和异构关联的区别
注:同构关联的表出自同一个地方,比如说两张表都来自Oracle数据库;异构关联的表出自不同地方,比如说一张表来自Oracle数据库,一张表来自于MySQL数据库。
2、需求
3、ETL开发流程
1)定义源表
① 将Oracle数据库中的emp表导入到info中;
② 首先查看一下dept表在MySQL的什么数据库下;
③ 将MySQL数据库中的dept表导入到info中,需要新建立一个连接MySQL的驱动;
④ 完成上述操作后,就会出现下表,继续完成如下操作;
⑤ 接着选择你要导入的表在什么数据库;
⑥ 接下来从mysql中的导入dept表到info中;
⑦ 上述操作完成后,接着完成下面的操作;
⑧ 两张表导入完成后的效果如下;
2)定义目标表:随意选择一张源表定义目标表,这里我们利用Oracle中的emp表定义目标表;
① 将emp表拖动到右侧的灰色区域;
② 双击该目标表,给目标表重命名;
③ 设置目标表的列字段:将dept中的字段加入到目标表的字段中去;
④ 生成并执行sql,才能在目标数据库中真正生成这张目标表;
⑤ 可以去目标数据库edw中查看生成的目标表;
3)创建映射;
① 定义一个映射;
② 将Oracle中的emp表和MySQL中的dept表,都拖拉到右侧灰色区域;
注意:从上图可以看出:deptno同样一个字段在Oracle中和MySQL中数据类型不一致,因此,我们需要将这个字段的数据类型设置为相同。 ③ 修改dept表中的deptno字段的数据类型:添加一个“f(x)表达式转换”组件,并将dept表中的所有字段,都传递给“f(x)表达式转换”组件;
④ 双击“f(x)表达式转换”组件,进行数据类型的转换;
⑤ 添加一个“联接器转换”组件,并将各自的字段都传递到“联接器转换”组件中;
⑥ 双击“联接器转换”组件:设置一个关联条件;
⑦ 将“联接器转换”组件中的字段都传递给目标表;
⑧ 使用CTRL + S保存一下创建的映射;
4)创建任务
① 创建一个任务;
② 选择该任务执行的映射;
③ 创建数据库连接对象; Ⅰ 创建oracle中emp源表的数据库连接对象;
Ⅱ 创建mysql中dept源表的数据库连接对象;
Ⅲ 创建目标表的数据库连接对象,这个在oracle数据库中;
④ 修改源表的连接对象; Ⅰ 修改emp表的连接对象;
Ⅱ 修改dept表的连接对象;
⑤ 修改目标表的连接对象;
⑥ 使用CTRL + S保存该任务;
5)创建一个工作流;
① 创建一个工作流;
② 建立工作流与任务之间的连接,同时保存创建的工作流;
③ 通过任务启动工作流;
④ 上述操作会自动打开M客户端;
⑤ 最后再去目标表中查看最终生成的数据,可以看到已经将mysql中的dept表和oracle中的emp表关联到一起了;
相关文章
- 您有多点会员吗?——数据库渐进式创新助力多点推进经营大脑实践
- 一文搞懂Redis
- 新经济 DTC 转型,一个简单而强大的数据平台至关重要
- SQL语句中单引号、双引号的用法
- 学SQL必须了解的十个高级概念
- MySQL缓冲池(buffer pool),终于懂了!!!
- 警告!别再使用TIMESTAMP作为日期字段
- 一起学mongodb第五卷之事务
- 分布式 PostgreSQL 集群(Citus),官方快速入门教程
- 使用 SingleStore 作为时间序列数据库
- Sping Security-动态认证用户信息
- MySQL那些不常用的一些SQL语句
- 分布式 PostgreSQL 集群(Citus),分布式表中的分布列选择优秀实践
- 五大步骤加十个案例,堪称SQL优化万能公式
- Redis 布隆(Bloom Filter)过滤器原理与实战
- 在 Linux 中监控 MySQL 性能的四个有用的命令行工具
- Django-Multitenant-分布式多租户数据库项目实战(Python/Django+Postgres+Citus)
- S 锁与 X 锁,当前读与快照读!
- 碎片化的数据库世界,你了解几分?
- 分布式 PostgreSQL 集群(Citus)官方示例-时间序列数据