外部表是指存储在外部文件中的数据,Oracle可以通过创建外部表以只读的方式来查询文件数据的内容,这对于文件数据的分析非常有用,而且还可以轻松的将外部表的内容插入到数据库中
注意:Oracle只能处理位于Oracle服务器上的外部文件,它依赖于Oracle的目录对象和 ORACLE_LOADER 来加载外部文件中的数据
实际上创建外部表只是在数据字典中添加了外部表的元数据信息,并没有在数据库中为外部文件创建数据表。Oracle通过访问驱动程序来读取外部表中的数据。Oracle提供了两种访问驱动,默认使用 ORACLE_LOADER 作为加载并访问外部文件的驱动。
下面是一张员工表的基本员工信息,保存为CSV文件,字段内容以逗号分隔
360,Json,CLERK,121,2008-09-12,3000,0,50,jjanus
361,Rose,SALES,145,2009-02-05,8000,0.1,80,mjasper
362,Marry,AD_REP,200,2010-10-12,5500,0,10,bstarr
363,Henny,ACCOUNT,145,2008-11-12,9000,0.15,90,aalda
接下来将使用如下几个步骤来创建一个使用 ORACLE_LOADER 作为访问驱动的外部表
1、要能访问服务器上的操作系统中的文件,首先必须在数据库中建立一个指向该数据文件所在位置的目录对象,通过目录对象访问相应的操作系统文件。假设员工表 empxt1.csv 文件位于 /home/oracle/flatfiles/data 文件夹中,可以使用如下的代码创建一个Oracle目录对象
create or replace directory admin_dat_dir as '/home/oracle/flatfiles/data';