日期:2014-05-16 浏览次数:20559 次
什么是外部表?
????? 有时候,数据库海量数据的存储,是一个令人头疼的问题。别的不说,光是频繁的执行insert(1000次/秒)都是一场恶梦。但是,如果将数据保存到文家里,而不是数据库中,数据序列化的开销就小得多了。但是,对于文件的各种复杂检索,又是一件相当麻烦的事。
??? 幸好,Oracle有这样一种特性,它可以将某些特定格式的文件映射到数据库中,形成一个“表”,称为“外部表”。单用户更改文件内容时,外部表中的数据即随之改变。同时,用户又可以像检索普通表一样,以只读的方式对外部表进行检索。
1.外部表适用于通过海量文本数据文件导入数据库情况。支持SQL语法,可以封装到应用程序代码中进行灵活的定义和调度。也适用于数据迁移,表数据重建。
2.多线程机制,性能优异,对于大数据情况,导入性能比HPL性能高2到3倍
?
External table和正规的表非常相似,具体的定义能参见《Oracle概念手册》,以下的几点需要注意:
>创建的语法类似于: "CREATE TABLE ... ORGANIZATION EXTERNAL"
>数据在数据库的外部组织,是操作系统文件。
>操作系统文件在数据库中的标志是通过一个逻辑目录来映射的。
>数据是只读的。(外部表相当于一个只读的虚表)
>不能在上面运行所有DML操作,不能创建索引。
>能查询操作和连接。能并行操作。
例子:
假定有如下的两个数据文件:
1 平面文件数据的描述
假设如下的两个平面文件
1.dat:
Code: [Copy to clipboard]
7369,SMITH,CLERK,7902,17-DEC-80,100,0,20
7499,ALLEN,SALESMAN,7698,20-FEB-81,250,0,30
7521,WARD,SALESMAN,7698,22-FEB-81,450,0,30
7566,JONES,MANAGER,7839,02-APR-81,1150,0,20