首页 » 编程开发 » ORACLE » 正文

Oracle外部表的创建External Table详细教程

Oracle外部表External Table)原理

将一个外部文件(如txt、csv格式)映射到ORACLE数据库系统中,生成一张只读的虚表,该虚表可以进行查询和连接的操作,其他一切DML操作都不能适用,无法创建索引。

Oracle外部表External Table)适用场景

1、开发需要将一个超大文件入库进行非DML操作。

2、当前用户拥有create directory的权限或者拥有DBA操作权限。

3、拥有将文件拷贝到ORACLE服务器下的权限。

4、ORACLE数据库版本在9i及9i以上。

Oracle外部表(External Table)使用方法

第一步,如果当前用户没有create directory的权限,那么先授权

grant create any directory to tiger;

第二步,创建directory,登录sqlplus并创建directory

sqlplus tiger/tiger123;
create or replace directory tiger_obj_name as ‘/home/tiger’

第三步,将文件拷贝到ORACLE所在的服务器上,本例拷贝test.txt到第二步我创建的directory下,“/home/tiger”
第四步,SQLPLUS中创建外部表External Table

create table TestTable(
ID varchar2 ( 10 ),
NAME varchar2 ( 20 ))
organization external (
type oracle_loader
default directory tiger_obj_name
access parameters (fields terminatedby ‘,’ )
location ( ‘test.txt’ )
)
reject limit unlimited;

执行完毕,外部表就创建完成了,可以select * from TestTable;试试。

相关参数解释

1、“type oracle_loader”,这里的type参数,通常有两个选择,如果需要导入的文件是dump格式的,那么这样写“type oracle_datapump”,否则,就是“type oracle_loader”。

2、default directory tiger_obj_name,tiger_obj_name就是在第二步创建的directory名称。

3、“access parameters (fields terminatedby ‘,’ )”的意思就是指文件中字段之间以什么符号间隔。

4、location ( ‘test.txt’ )即文件的名称。

5、最后有一句“reject limit unlimited”,用于告诉oracle即将要创建的这张外面没有行数的限制,如果没有这条语句,那么当文件行数超过200万条的时候,oracle会抛出异常“ORA-30653 reject limit reached”。

 

更加详细的解释,大家可以参考oracle官网上面的http://docs.oracle.com/cd/B19306_01/server.102/b14215/et_concepts.htm

发表评论