使用Oracle外部表功能可以执行下面两种操作。
1.利用SQL以透明方式从OS都好分割值(CSV)文件选择数据,执行将这些文件中的数据加载到数据库之类的任务。
2.创建用于传输数据的,跨平台的数据泵文件,还可以通过压缩和加密方式创建这些文件,提高数据传输的效率和安全性。
外部表的一个通常用法,是通过SQL*Plus从OS的CSV文件中选择数据。当通过这种方式使用外部表时,必须设置文件中的数据类型和组织方式。可以使用外部表选择数据,但是不能修改CSV文件的内容(无法执行插入,更新或删除操作)。
使用外部表还可以从数据库选择数据,并将这些数据写入二进制数据泵文件中。外部表的定义决定了使用那些表和列加载数据。通过这种方式使用外部表,可以为跨平台文件提取大量数据,将来使用跨平台文件可以为各种数据库加载数据。
要启用这些外部表功能,必须先创建指向OS文件的数据库目录对象。然后,使用CREATE TABLE … ORGANIZATION EXTERNAL 语句设置数据库能够作为源和目标库使用的OS文件。
–SQLLoader和外部表
外部表的一个常用方法,是使用SQL将OS文件中的数据加载到普通数据库表中。这可以提高从CSV文件向数据库加载大量数据的效率。在较旧的Oracle版本中,这类任务是通过SQLLoader或者自定义的ProC程序完成的。
SQLLoader的功能几乎和外部表一样。外部表比SQL*Loader更灵活和直观。此外,在使用外部表加载数据时,还可以利用直接路径和并行功能提高性能。
将SQLLoader和外部表做比较可查明他们之间得差异。
–下面是使用SQLLoader加载和转换数据得步骤。
1.创建参数文件,SQLLoader使用该文件解析OS文件中得数据。
2.创建普通数据库表,SQLLoader会像该表插入记录。这个表会称为数据中转站,以便将来进一步处理。
3.运行SQLLoader得实用程序sqlldr,将数据从OS文件加载到数据库表中(步骤2创建得表)。在加载数据时,可以利用SQLLoader提供得一些用于转换数据得功能。这个步骤不易完成,要将参数文件正确得与表中相应得列对应起来,所以需要经过反复实验。
4.创建另一个表,该表用于存储转换完成得数据,
5.运行SQL命令,从中转表(步骤2中创建得表)提取数据,然后转换数据并将他们插入产品表(步骤4中创建得表)。
–与上述SQLLoader步骤相比,执行下面得步骤可以使用外部表加载和转换数据。
1.含有 CREATE TABLE … ORGANIZATION EXTERNAL 语句的脚本,将OS文件和结构与表中的列对应起来。运行了该脚本后,可以直接使用SQL命令查询OS文件的内容。
2.创建普通表,使用该表存储转换完成的数据。
3.使用SQL命令从外部表(步骤1中创建的表)加载数据并转换,将转换完成的数据存储到步骤2创建的表中。
在许多应用场景中,SQLLoader可以有效的加载大量数据。在执行这类任务时它仍旧是一个优秀的工具。
外部表的优点:
1.创建表加载数据更加简捷。
2.外部表执行创建和加载操作的界面是SQL*Plus。
3.可以在数据库加载数据前,查看外部表中的数据。
4.可以在无需中转表的情况下,加载,转换和聚集数据。在处理大量数据时,这会节省大量空间。
--向数据库加载CSV文件
--创建目录对象
create directory exa_dir as '/u02/org