分类: Oracle
2008-05-19 15:25:44
本文将和大家一起探讨如何用OWB构建一个自动化的ETL处理过程。在假设你已经安装了OWB的前提下,下面会图文并茂逐步为大家讲解构建的过程。
背景知识
Oracle Warehouse Builder,常简称为OWB,能够将无格式结构的平面文件(flat file)加载到数据库的过程自动化。许多数据库管理员对SQL*Loader工具和shell脚本的混合使用非常熟悉,再加上在各个不同的地方进行一些cron配置就可以完成数据加载的过程。OWB也能够完成这样的任务(而且还有更多的功能),通过提供一个向导驱动兼备大量断点和观查点提示及点击功能的图形用户界面来完成这一过程。通过其“设计中心”和“控制中心”界面,用户可以设计并部署ETL过程(本文重点关注其中的加载过程,也就是将分隔数值的平面文件内容加载到一个表,而且在加载的过程中数据不发生改变)。此外,ETL的部署不局限于你当前正在工作的服务器,OWB让你能够在一台服务器上设计ETL过程,然后将设计的步骤部署到另一台服务器上,如果你想要,还可以部署到更多的服务器上。
这个操作背后的整个程序是怎样一个概念呢?我们来看看要完成整个操作需要进行的步骤,也许能够帮你理清大概的框架:
1. 指定源文件,包括文件所在位置及其性质。
2. 创建一个外部表,作为数据字典的存储器。
3. 确认数据库中“真实”表,如有需要创建该表。
4. 在有计划的基础上进行整个过程,或一次性完成整个处理过程。
OWB对这个过程的处理方法是利用与这些对象相关的元数据(metadata),通过设计映射和进程流(也称为过程流)来绑定他们。事实上,可以将进程流作为一个可视化假象进行创建,也就是说,OWB实际所使用的工作流只是OWB生成的一个进程流模式图,不过这个模式图足以当作工作流来使用。
把这个过程的每一部分都当作一个对象来考虑:文件、文件的位置、外部表、真实表、将flat文件映射到外部表的过程、最后运行的作业等等。所有的这些都是对象,而这些对象都可以通过层级和依赖性将这些对象绑定起来。每个对象类型都存在一个模块当中。由于这个工具是基于Java语言的,所以面向对象的设计是可行的。一般来说,每个对象都是一个实例或者是通过某种方法实例化的对象。
过程
一个典型的ETL过程模式包括在循环的基础上加载一个平面文件(你也可以只执行其中的映射部分)。如果你将该过程分解为涉及项目树不同部分的若干步骤,那么就很容易搞清楚整个任务了。一个项目的开始,首先需要在Oracle下创建一个一个模块。提示大家,要记住几乎每一个类别都涉及到相同的两个步骤:创建模块和导入元数据。而且抽样并不总是基于同一个表。