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

Oracle 外部表说明及简单范例

2015-10-20 15:00 351 查看
Oracle
外部表

步骤:

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) 可以查询操作和连接,可以并行操作。

alter table alert_log reject limit unlimited;
--告诉oracle, alert_log这个外部表行没有限制,如果不执行这条语句,下面查询的时候就会出以下错误:

ERROR:
ORA-29913: error in executing ODCIEXTTABLEFETCH callout
ORA-30653: reject limit reached
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: