您的位置:首页 > 数据库 > Oracle

oracle 外部表 external table

2015-08-17 16:50 417 查看
http://blog.sina.com.cn/s/blog_7930c09d0100xiig.html


Oracle
外部表


 

环境: winxp + oracle10g

外部数据表是只读的,只能对外部表执行select操作,insert, update,delete不能执行。外部表的数据不保存在数据库里,所以不能为外部表创建索引。ANALYZE语句不支持采集外部表的统计数据,应该使用DMBS_STATS包来采集外部表的统计数据。

 步骤:

1.  创建测试文件external_data.dat,内容如下:

0001,hawke_test,03-OCT-11

0002,malei_test,03-OCT-11

 

2.  使用sys用户建立逻辑目录,并给指定的用户授予权限。(要有对操作系统中该目录的读写权限,直接使用scott用户建立,提示权限不足):

 

SQL> create directorydbtestdir as 'E:\oracle\';

 

Directory created.

   

   SQL> grant read on directory dbtestdir toscott;

 

Grant succeeded.

 

SQL> grant write ondirectory dbtestdir to scott;

 

Grant succeeded.

3.  将测试文件external_data.dat,移至E:\oracle\目录下。

4.  创建外部表,内容如下:

 

SQL> CREATE TABLEexternal_tab

  2  (

  3    id varchar2(4 char),

  4    name varchar2(12 char),

  5    birthday date

  6  )

  7  ORGANIZATIONEXTERNAL

  8  (

  9    TYPE ORACLE_LOADER

 10    DEFAULT DIRECTORY dbtestdir

 11    ACCESS PARAMETERS

 12  (

 13  RECORDS DELIMITED BYNEWLINE

 14  FIELDS TERMINATED BY','

 15  )

 16 LOCATION('external_data.dat')

 17  );

 

Table created.

5.  查询外部表:

SQL> select * fromexternal_tab;

 

ID      NAME                    BIRTHDAY

-------- --------------------------------------

0001    hawke_test              03-10月-11

0002    malei_test               03-10月-11

6.  说明:

 

1)  外部表是指不在数据库中的表,如操作系统上的一个按一定格式分割的文本文件或者其他类型的表,即数据在数据库的外部组织,是操作系统文件。

2)  这个外部表对于Oracle数据库来说,就好像是一张视图,在数据库中可以像视图一样进行查询等操作。

3)  这个视图允许用户在外部数据上运行任何的SQL语句,而不需要先将外部表中的数据装载进数据库中。

4)  需要注意是,外部数据表都是只读的,不能够更改。

5)  操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。

6)  不可以在上面运行任何
DML 操作,不可以创建索引。

7)  可以查询操作和连接,可以并行操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息