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表关联到一起了;
在这里插入图片描述

发布了50 篇原创文章 · 获赞 64 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_41261833/article/details/103706992