ITPub博客

首页 > 数据库 > Oracle > ORACLE外部表的应用实例

ORACLE外部表的应用实例

原创 Oracle 作者:itpub120 时间:2006-10-25 20:33:05 0 删除 编辑

ORACLE外部表的应用实例

Oracle 9i 的一项新特性就是 External Table,它就象通常的数据库表一样,拥有字段和数据类型约束,并且可以查询,但是表中的数据却不存储在数据库中,而是在与数据库相关联的普通外部文件里。当你查询 External Table 时,Oracle 将解析该文件并返回符合条件的数据,就象该数据存储在数据库表中一样。
具体的定义可以参见《 Oracle 概念手册》,以下的几点需要注意:

<一>:外部表的描述:

> 创建的语法类似于: "CREATE TABLE ... ORGANIZATION EXTERNAL"
> 数据在数据库的外部组织,是操作系统文件。
> 操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。
> 数据是只读的。(外部表相当于一个只读的虚表)
> 不可以在上面运行任何 DML 操作,不可以创建索引。
> 可以查询操作和连接。可以并行操作。

例子:
假如有如下两个数据文件:
1: 数据文件的格式
F1.TXT文件:

13234,FIRSTS
46464,TESTA

F2.TEXT文件:

13234,SECONDS
46464,TEST
2:创建目录,并进行授权;
sql> create directory test_dir as 'E:temp';
sql>grant read,write on directory test_dir to users;
注意:创建完毕逻辑目录之后要把平面文件拷贝到该目录下,另外还要注意文件名字不要写错。
3:创建外部表:
create table test_table
(ms_no varchar(20),
tip varchar(20),
descs varchar(20))
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY test_dir
ACCESS Parameters
(
RECORDS DELIMITED BY NEWLINE
badfile 'bad_dev.txt'
LOGFILE 'log_dev.txt'
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
(ms_no,tip,descs)
)
LOCATION('F1.txt','F2.txt')
)
;
表创建完成.当然也可以导入一个文件

4:进行SELECT 操作看是否正确;
SQL>select * from test_table
结果如下:
MS_NO TIP DESCS
-------------------- -------------------- --------------------
13234 FIRSTS
46464 TESTA
13234 SECONDS
46464 TEST

<二>: 如何得到外部表的有关信息:
SQL> DESC DBA_EXTERNAL_TABLES;
Name Type Nullable
----------------------- ------------- - ----
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
TYPE_OWNER CHAR(3) Y
TYPE_NAME VARCHAR2(30)
DEFAULT_DIRECTORY_OWNER CHAR(3) Y
DEFAULT_DIRECTORY_NAME VARCHAR2(30)
REJECT_LIMIT VARCHAR2(40) Y
ACCESS_TYPE VARCHAR2(7) Y
ACCESS_PARAMETERS VARCHAR2(4000) Y

SQL>SELECT OWNER,TABLE_NAME,DEFAULT_DIRECTORY_NAME,ACCESS_PARAMETERSFRFROM
DBA_EXTERNAL_TABLES;
可以得到外部表的相关信息;


<三>:如何得到外部路径的信息:
SQL> desc DBA_EXTERNAL_LOCATIONS;
得到该表结构:
Name Type Nullable
--------------- -------------- --------
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
LOCATION VARCHAR2(4000) Y
DIRECTORY_OWNER CHAR(3) Y
DIRECTORY_NAME VARCHAR2(30) Y

SQL> select * from DBA_EXTERNAL_LOCATIONS;
得到具体信息;


相关技术贴子联结
http://www.psoug.org/reference/externaltab.html

[@more@]

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8109090/viewspace-873681/,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 爱他
请登录后发表评论 登录
全部评论
  • 博文量
    60
  • 访问量
    580384