首页 > 其他 > 详细

Loading Data From File To Table By ODI 12c

时间:2018-01-30 11:55:16      阅读:269      评论:0      收藏:0      [点我收藏+]
本文主要介绍如何将文件里的数据通过ODI导入到表中。

一、源文件准备工作

源文件是一个文本文件,存放在/home/oracle/fsource目录中。

[oracle@hdp06 ~]$ la /home/oracle/fsource/
-rw-rw-rw-  1 oracle oinstall 4.2M Jan 29 10:00 exam_score.txt

1.1 定义源物理体系结构

  • 定义New Data Server
    右击ODI Studio->Topology->Physical Architecture->File,打开FILE_GENERIC,在Definition对话框中输入相关参数如下图:
    技术分享图片
    输入完成后,点击左上方的“保存”,接着点击“Test Connection”测试下是否可以连接。
    JDBC对话框,点击JDBC Driver后面的“查找”图标,选择“ODI File JDBC Driver”。点击JDBC URL,选择“jdbc:snps:dbfile”,根据文件的编码格式加入相关参数值即可。如下图所示:
    技术分享图片
    其中的ENCODING=UTF-8指文本文件的编码格式。
  • 定义物理方案
    接着创建物理方案。右击“FILE_GENERIC”,选择“New Physical Schema”,如下图:
    技术分享图片
    在Definition对话框中输入方案的目录(文本文件所在的目录)和工作目录(可以和方案目录相同),目录实际上指的是数据文件的存放路径,点击“保存”。

    1.2 定义源逻辑体系结构

    右击ODI Studio->Topology->Logical Architecture->File,选择“New Logical Schema”,如下图:
    技术分享图片
    随便定义个名称,在Definition对话框中选择上述创建物理方案,保存。
    1.3 定义源设计模型

  • 定义模型文件夹
    ODI Studio->Designer,选择“New Model Folder”,随便定义个名称,点击保存。
    技术分享图片
  • 定义模型
    右击新建的模型文件夹,选择“New Model”,在Definition对话框中随便定义名称,Technology选择“File”,逻辑方案选择上述创建的,点击“保存”。
    技术分享图片
  • 定义New Datastore
    右击模型名称,选择“New Datastore”,随便定义名称,Datastore Type选择Table,输入源数据文件名称,点击保存。
    技术分享图片
    接着在File对话框中,设置字段与记录的分隔符,如下图:
    技术分享图片
    最后在属性对话框中,通过逆向工程导入表结构。导入的数据类型和字段名称需要进行调整,也可以直接手工添加字段。
    技术分享图片
    表结构导入完成后,可以右击Datastore名称,选择“View Data”预览表数据。

    二、目标表准备工作

    首先在目标库上创建对应的表,其次依次定义物理体系结构以及逻辑体系结构。

    2.1 定义物理体系结构

  • 创建New Data Server
    ODI->Topology->Physical Architecture,右击Oracle,选择”New Data Server“,在Definition对话框中定义一个名称,输入Oracle实例名称以及用户信息,保存。
    技术分享图片
    接着在JDBC对话框中,选择JDBC驱动以及输入jdbc连接URL,可以通过点击“Test Connection”测试,测试成功后保存。
    技术分享图片
  • 创建New Physical Schema
    右击“Data Server”,选择“New Physical Sever”,在Definition对话框中选择对应的schema,其他使用默认值即可,保存。
    技术分享图片

    2.2 定义逻辑体系结构

    ODI->Topology->Logical Architecture,右击Oracle,选择”New Logical Schema“,定义一个名称,选择上述创建的Physical Schema,保存。
    技术分享图片

    2.3 定义目标设计模型

    ODI->Designer->Models->New Model,定义名称,Technology选择Oracle,Logical Schema选择对应的名称,点击保存。
    技术分享图片
    接着点击Reverse Engineer,将表结构同步过来。这里除了目标表以为,rhnuser用户下的所有表结构都会同步一份。

    三、映射

    3.1 创建设计工程

    ODI->Designer->Projects->New Project,为工程定义个名称,保存。
    技术分享图片

    3.2 导入知识模块

    右击工程名称下面的Knowledge Modules,选择Import Knowledge Modules,这里的模块/u01/app/oracle/Middleware/odi/sdk/xml-reference路径下,这里选择所有的模块。
    技术分享图片

    3.3 创建映射

    Designer > Projects > IMP_F_TBE>First Folder右击Mappings, 选择New Mapping,定义一个名称,接着将源表和目标表拖到映射里面,并通过字段名称进行自动关联。
    技术分享图片
    点击在逻辑结构里点击目标表,将Target的Integration Type设置为Incremental Update(默认为Append),保存。
    技术分享图片
    在物理结构里,点击Default,将Loading Knowledge Module设置为LKM SQL to SQL (Built-In).GLOBAL保存。
    技术分享图片

    四、执行映射

    右击映射名称,选择RUN,如图:
    技术分享图片
    运行过程可以在Operation->Session里看到,如图:
    技术分享图片

    注意事项:

    1、目标表中必须存在主键;
    2、如果数据库实例和ODI不在一台机器上,源数据文件必须在各个服务器上的相同位置。因为在加载数据之前,会在数据库实例中定义一个目录指定文件的位置。如果文件不在同一位置,会出现下图中的报错:
    技术分享图片

参考文献:

1、ODI 12C加载平面文件到oracle数据库
2、ODI 12c - File to Table

Loading Data From File To Table By ODI 12c

原文:http://blog.51cto.com/candon123/2066681

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!