本文介绍如何在Oracle Warehouse Builder 11g里创建一个Mappings,并且以平面文件作为数据源或者目标源。最常见的平面文件有.csv文件等一些内容带有规律格式的文件。

本文主要有以下两个主要方面:

A 以平面文件为数据源,Oracle数据库为目标源。

B 以平面文件为目标源,Oracle 数据库为数据源。

实践操作前,我们都需要打开本地的Design Center来定义和设计我们的项目,操作步骤如下:

1 点击开始,选择Oracle 产品,选择Warehouse Builder,点击Design Center

clip_image001

打开Design Center后,在如下的窗口输入上篇 [OWB 11g循序渐进(1)] 所配置的账户及相应密吗,并点击 OK:

clip_image002

成功登陆Design Center,如图所示:

clip_image004

好了,现在登入设计中心后,我们就可以开始我们的两个主要步骤,当然在我们的实践中,需要用到一个有测试数据的平面文件,我这里直接引用MSSQL的测试数据库生成的一个平面文件clip_image006

我们在实践开始前,我们先把这个文件放置到实践环境中的C:\FlatFiles文件夹里。

A. 以平面文件为数据源

(1). 创建一个Oracle的目的源Location

1.在Connection Exploere中,展开Locations->Databases->Oracle,右键单击Oracle,点击New

clip_image008

2.在弹出的对话框输入如下图所示信息,输入信息后,点击Test Connection,在Test Results框中返回Successful! ,则连接成功.

clip_image009

3.点击OK. 成功创建一个Location.

clip_image010

(2).创建一个Files的数据源Location

1.在Connection Exploere中,展开Locations->Files,右键单击Files,点击New

clip_image011

2.在弹出的对话框中输入如图所示信息:

clip_image012

3.点击OK,创建成功后,如图所示:

clip_image013

(3).创建一个Oracle 类型的Module

1.在Project Explorer中,MY_Project->Databases->Oracle里右键单击New,如图所示:

clip_image014

2.在弹出的对话框输入如图所示信息,并点击下一步:

clip_image016

3.在Location栏位里,选择我们之前创建的Location [ATSTESTDB],点击Finsih:

clip_image018

4.成功创建Module后,展开它,如图所示:

clip_image019

(4).创建一个Files 类型的 Module

1.在Project Explorer中,MY_Project->Files里右键单击New,如图所示:

clip_image020

2.在弹出的对话框中点击Next,进入以下对话框,输入如图所示信息,并点击Next

clip_image022

3.在弹出的对话框中,选择之前我们创建的Files类型的 Location [ATSTestFiles_CSV],并且在Import after finish上打勾,之后点击Finish

clip_image024

4.当我们勾选了Import after finish,点击以上的Finish后,弹出以下对话框,点击Next:

clip_image026

5.选择All Data Files: ,如下图所示,点击Next:

clip_image028

6.点击如图所示按钮:

clip_image030

点击后得到如下图所示:

clip_image032

7.点击Next,得到如图所示窗口:

clip_image034

8.点击Sample,得到如图所示窗口:

clip_image036

9.点击Next,进入如图所示窗口:

clip_image038

10.点击Next,进入如图所示窗口:

clip_image040

11.点击Next,并在窗口中的Field Delimiter 选择 Tab,如图所示:

clip_image042

12.点击Next,进入如图所示窗口:

clip_image044

13.点击Next,并设置如图所示:

clip_image046

14.点击Finish,返回到如图所示窗口:

clip_image048

15.点击Finish,配置完成Files Module,如图所示:

clip_image049

(5).创建External Tables

1.右键点击My_Project->Databases->Oracle->TARGET_ATSTESTDB->External Tables,点击New,如图所示:

clip_image050

2.弹出以下对话框

clip_image052

2.点击Next,输入如图所示信息:

clip_image054

3.点击Next后,如图所示,点击EMPLOYEES_CSV

clip_image056

4.点击Next,在如图所示对话框,Default Location选项中选择 ATSTESTFILES_CSV

clip_image058

5.点击Finish,创建成功后,如图所示

clip_image059

(6).创建一个目标源表

创建一个目标源表,这个表我们可以是已经存在与数据库的,也可以是我们在Design Center里面创建。 如果是在数据库里面已经有的,那么我们可以通过和导External Table的方式把目标源表导Tables里面。

这里,我们介绍通过Design Center的方式来创建这个目的源表,步骤如下:

1. 在Tables点击右键,点击New,如图所示:

clip_image060

2.在弹出的窗口Data Object Editor里面按如图所示,输入表的名称:

clip_image062

3.添加列。在Columns栏里输入相应的列名,如图所示:

clip_image064

4.输入或填写相应列后,关闭Data Object Editor窗口,目标源表设计完成,此时,它还不真正存在于数据库里面。我们后续创建好Mappings后,再一起部署。

(7).创建Mappings

Mappings存储的是数据从数据源到目标源的流程的定义。我们需要在这里创建一个流程,让他把数据从flat file导入到目标表里面。在我们的例子里面是从EMPLOYEES_CSV_SOURCE到EMPLOYEES的一个过程。

1.右键单击Mappings,点击New,如下图所示:

clip_image065

2.在弹出的对话框输入如下信息,并且点击OK:

clip_image066

3.弹出的Mapping Editor: CSV_TO_Table对话框里面,展开Target_ATSTestDB,如图所示:

clip_image068

4.拖拽左边Tables里面的对象EMPLOYEES和External Tables里的对象EMPLOYEES_CSV_SOURCE到右边的Mapping栏里,如图所示:

clip_image070

5.接下来,我们需要连接列与列之间的Mapping关系,左键按住EMPLOYEES_CSV_SOURCE表里面的列EMPLOYEEKEY,拖拽到表EMPLOYEES表里面的EMPLOYEESKEY列上。为其他列重复以上的操作。得到如图结果:

clip_image072

这个Mapping的FLOW是把数据按照图中的映射关系,从表EMPLOYEES_CSV_SOURCE全部直接的导入到表EMPLOYEES里面,仅此而已。

6.点击左上方的保存按钮,并关闭改Mapping Editor窗口:

clip_image074

现在,我们也创建好了数据源与目标源的关系。接下来,我们需要部署我们的项目。

(8).部署与验证

1.右键点击TARGET_ATSTESTDB,点击Deploy,如图所示:

clip_image075

2.查看初始数据。右键点击表EMPLOYEES,选择Data,如图所示:

clip_image076

同样的操作,查看EMPLOYEES_CSV_SOURCE表的数据,得到如下:

clip_image078

注意,我们从图中的红色圈圈里面可以看到两张表的记录行数:

目标源: EMPLOYEES的行数为 0.

数据源:EMPLOYEES_CSV_SOURCE的记录行数为296.

查看完毕后,关闭这两个窗口。

3.运行Mapping.

右键点击CSV_TO_TABLE,点击Start....如图所示:

clip_image079

4.运行完成Mapping后,重新右键点击EMPLOYEES表,选择Data,如果所示,现在EMPLOYEES表里的数据行数也达到了296,通过验证,我们成功把数据从CSV文件导入到Table里面。

clip_image081

小结:

上述实践,通过建立不同类型的Location,并建立目标数据源,与文件库(Files),并通过建立External Table来和文件建立关系。创建Mapping,定义数据流的逻辑。部署,运行,验证数据。一个简单的"ETL"建立完毕,为什么给ETL加引号呢,因为上述的Mapping等操作只是ETL的冰山一角。后续,我会继续涉及到Process Flows, Schedules...等等,一系列OWB的操作。

B.以平面文件为目标源

有了前面的步骤的接触,我们这个section就只做简单的截图。

1.创建Mappings。在Oracle->TARGET_ATSTESTDB->Mappings新建一个 Mappings, 名称设置为Table_To_CSV .

2.分别拖拽Employees 表以及Employees_CSV到设计窗口里,并把对应列相应链接起来,如下图所示:

clip_image083

设置完成后,点击保存,关闭窗口。

3.右键点击刚创建的Mapping: Table_To_CSV 选择 Configure...,在弹出的窗口配置如下:

clip_image085

在Target Data File Name栏位里输入:OutputCSV.csv 并且点击OK.

4. 右键点击刚创建的Mapping: Table_To_CSV 选择 Deploy.

5.部署完成后,右键点击Mapping: Table_To_CSV,选择Start,运行此Mapping.

运行完成后,我们到Source_ATSTESTFILES的Lacation存储库(C:\FlatFiles)找到刚生成的文件OutputCSV.csv,用记事本打开后,如下所示:

clip_image087

我们可以看到,每个字段都有双引好包括着。

6.上面的结果看到,结果集里每个字段都默认有双引号包括。如何去除呢?

1.双击Mapping: Table_To_CSV 打开编辑器

2.点击Employees_CSV Operator,查看Flat File Operator Properties,如图所示:

clip_image089

3.把上图Field Enclosure Characters(红线标注)的栏位里的双引号去掉,并保存。

7.重新部署该Mapping: Table_To_CSV ,并重新运行该 Mapping.

8.重新查看生成的结果如下:

clip_image091

现在整个结果都正确了。

至此,用Flat File作为数据源或者目标数据源与Oracle数据库表做简单ETL都演示完成。谢谢大家。 如果有什么问题请留言或者给我发Email: wwwioriwww@hotmail.com.

posted on 2009-05-14 22:33  杂技堂  阅读(4470)  评论(4编辑  收藏  举报