ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 外部表加载数据

外部表加载数据

原创 Linux操作系统 作者:wokeyi1314 时间:2010-07-06 14:58:57 0 删除 编辑

如何创建外部表
法一:create table语句创建
1.创建directory对象
create directory extdir as 'D:\oracle\product\10.2.0\db_1\script';
grant read,write on directory extdir to scott;
2.执行create table语句
create table ext_case1
(ename varchar2(10),
job varchar2(20),
sal number)
organization external
(type oracle_loader
default directory extdir
access parameters
(records delimited by newline
skip 6
fields terminated by ","
(ename,job,sal)
)
location('ldr_case1.ctl')
);

create table ext_case1
(ename varchar2(10),
job varchar2(20),
sal number)
organization external   //指定这是一个外部表

(type oracle_loader   //指定访问驱动
oracle_loader     //传统方式,与sqlldr一脉相承,参数众多,应用广泛
oracle_datapump    //数据源是二进制文件

default directory extdir  //指定数据文件所在路径对应的directory对象名称

access parameters   //指定加载参数
(records delimited by newline  //指定记录结束标记,默认以换行结束
badfile 'extdir' : 'ldr_case1.bad'      //directory对象名和错误文件名称
logfile 'ldr_case1.log_xt'              //日志文件名
readsize 1048576   //读取日志文件的缓存区大小,默认是1MB
skip 6     //跳过的记录数
fields terminated by ","  //导入数据的分隔符
(ename,job,sal)    //列定义
)

location('ldr_case1.ctl')  //指定数据源
)reject limit unlimited;  //不指定默认为0不允许出现错误,unlimited则是不限制

法二:sql*loader创建
sqlldr scott/scott control=ldr_case1.ctl external_table=generate_only/execute/not_used

二.修改access parameters,将日志文件放入外部表中
1.修改access parameter 中logfile名为ext_case1.log
alter table ext_case1 access parameters
(records delimited by newline  
badfile 'extdir' : 'ldr_case1.bad'     
logfile 'ext_case1.log'             
readsize 1048576   
skip 6     
fields terminated by ","  
(ename,job,sal)    
)
如果要修改参数的话,所有参数必须重新设定
alter table ext_tb1_name default directory dir_name;
alter table ext_tb1_name location ('filename');

select dbms_metadata.get_ddl('table','ext_case1') from dual;   //查询表对象的定义

2.创建存放日志文件的外部表
create table ext_case1_log(
lname varchar2(4000))
organization external
(type oracle_loader
default directory extdir
access parameters
(records delimited by newline
nologfile
nobadfile
nodiscardfile
fields terminated by ","
(lname position(1:4000))
)
location('ldr_case1.log')
);

select * from ext_case1_log where rownum<=10;

注:以oracle_datepump加载的只有日志文件,没有错误文件和废弃文件

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

请登录后发表评论 登录
全部评论

注册时间:2010-02-26

  • 博文量
    70
  • 访问量
    157545