ODI学习第一天

ODI学习第一天

一、ODI简介
ODI(Oracle Data Integrator)前身是Sunopsis Active Integration Platform,在2006年底被Oracle收购,重新命名为Oracle Data Integrator。主要定位于在ETL和数据集成的场景里使用。ODI和Oracle原来的ETL工具OWB相比有一些显著的特点,比如和OWB一样是ELT架构,但是比OWB支持更多的异构的数据源等等。
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。
二、知识模块概念
知识模块的概念(Knowledge Module)。ETL的发展总是从手工编程开始,然后逐渐出现专门的ETL工具,其实我们在项目里所能够遇到的一些场景(如把文件载到数据库,从Mysql数据库抓取数据放到Oracle数据库里,从DB2把数据抓取出来放在Oracle数据库里等)撇开这些数据抽取和转换工作的业务部分,其实总是可以总结为:
file->Oracle
Mysql->Oracle
DB2->Oracle
Oracle->DB2
这些都是一些被反复使用的场景,ODI提出了知识模块的概念,把这些场景的详细的实现步骤作为一个一个的知识模块并使用Jython脚本语言结合数据库的SQL语句录制成一步一步的步骤忠实地记录下来,这样就形成了ODI里的100多个知识模块,基本上包含了所有普通应用所涉及到的所有场景。更方便的是,用户既可以直接使用ODI的知识模块完成数据的获取工作,也可以直接在知识模块上面做各种定制,比如某一个业务场景可能并不需要知识模块里的某一个特定的步骤,那就可以直接把该步骤删除掉从而提供更好的性能。当然用户也可以完全自己来开发这些知识模块。
ODI知识模块(Knowledge Module)的分类:
ODI的知识模块主要分为几个大类(RKM,CKM,LKM,IKM,SKM),其中最重要的是LKM(load KM)和IKM(Integration KM)
RKM:RKM完成从源系统和目标系统的数据结构的反向工程来形成数据模型的功能。
CKM:CKM完成数据质量检查。
LKM:LKM完成从源数据库数据加载到临时表。
IKM:IKM完成从临时表的数据加载到目标表。
SKM:SKM完成ODI和WEB服务接口的功能。
SKM(Service KM):Web服务知识模块,可以使用该知识模块来生成Web服务调用
ODI认为一个数据的流动包含从源表到临时表,然后从临时表到目标表的过程,而临时表可以放在源上,或者放在目标数据库上,可以自己选择。(当然,通过自己来改动KM也完全可以对这个概念做改动,甚至可以使用一个KM完成所有的工作)。
三、数据同步
数据同步的逻辑是在目标数据库里面存放临时表和目标表两个表,临时表和目标表的表结构是一样的。我们在同步数据时先创建一个临时表,然后先将数据同步到临时表中,然后临时表和目标表进行比较,将临时表中与目标表不一样的数据同步到目标表中,然后再将临时表删除。
四、实例
上面已经创建好了模型,
(1)接下来就是创建项目了。 项目自定义命名,这里命名为NewProject1

项目建好后如图所示,选择知识模块,右键导入新的知识模块
这里我们可以根据项目需要选择对应的知识模块,这里我们就先选择全部

(2)导入了知识模块之后,我们要创建过程,这是很重要的一步,因为我们数据同步的逻辑是在目标数据库用户里面临时表和目标表两个表,临时表和目标表的表结构是一样的。我们在同步数据时先创建一个临时表,然后先将数据同步到临时表中,然后临时表和目标表进行比较,将临时表中与目标表不一样的数据同步到目标表中。然后在将临时表删除。
(3)右键左侧的过程,选择创建新过程,命名为CREATE_TEMP_TBL。如图勾选多连接,选择oracle技术,这样就创建好了一个过程,接下来就是编辑过程详细资料了.

如图。选择左边
点击详细资料,点击右上角绿色加号
A、然后如下图命名创建临时表,方案要选LOGIC_TARGET,事务处理为自动提交,点击保存这样就创建好了一个创建临时表的过程

B、接下来继续在详细资料里面点击加号添加一个步骤。
为临时表添加索引

C\按之前的步骤继续创建两个过程。如下图所示
在DROP_TEMP_TBL里面有一个命令 为 删除临时表

删除临时表

在TEMP_TO_TARGET里面有两个命令,删除目标表中的旧数据以及加载临时表中的新数据。

删除目标表中的旧数据

加载临时表中的新数据

到这里过程就创建完了。接下来创建接口
右键新建接口命名TEST 选择上下文。下面的逻辑方案一定要选对。

(4)然后点击下面的映射。将源表拖到左侧面板里面,然后将关联的一个字段拖到另一个表中的相同字段上就建立了两个表的关联。
将字段向空白处拖就可以建立过滤条件

然后将目标表拖到右边栏里面,相同的字段它会自动匹配,当然也可以手动置顶匹配
这样接口就建立好了

(5)建立好了之后就开始建立程序包,建立他们的执行顺序。

新建一个程序包,然后点击下方的图表属性。选择odisleep组件拖到面板,设置间隔时间为86400秒(24小时)。然后将之前创建的接口与过程全部拖进来。按照下图方式进行连接。

(实例部分引自 作者:_JenKin 来源:CSDN
原文:https://blog.csdn.net/youzi1394046585/article/details/77774288 )

你可能感兴趣的:(ODI,数据库,odi)