Loading Data From File To Table By ODI 12c

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Loading Data From File To Table By ODI 12c相关的知识,希望对你有一定的参考价值。

本文主要介绍如何将文件里的数据通过ODI导入到表中。

一、源文件准备工作

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

[[email protected] ~]$ 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的主要内容,如果未能解决你的问题,请参考以下文章

Loading Data From Oracle To Hive By ODI 12c

Loading Data Into Hive From File By ODI 12c

mmdet3d读入waymo dataset:from file to input tensor

mmdet3d读入waymo dataset:from file to input tensor

mmdet3d读入waymo dataset:from file to input tensor

[MST] Loading Data from the Server using lifecycle hook