【Oracle】外部表

1 手动创建外部表

创建外部表使用目录

mkdir -p /home/oracle/ext     --使用ORACLE用户在操作系统中执行

在数据库中指定外部表目录

create directory ext_dir as '/home/oracle/ext';

将外部表目录使用权限给hr用户

grant read,write on directory ext_dir to hr;

创建外部表时如果数据文件不是文本文件,则需要使用preprocessor子句。

1)创建测试数据

vi emp.dat

"EMPNO","ENAME","JOB","MGR","HIREDATE","SAL","COMM","DEPTNO"
"7369","SMITH","CLERK","7902","1980/12/17","800.00","","20"
"7499","ALLEN","SALESMAN","7698","1981/2/20","1600.00","300.00","30"
"7521","WARD","SALESMAN","7698","1981/2/22","1250.00","500.00","30"
"7566","JONES","MANAGER","7839","1981/4/2","2975.00","","20"
"7654","MARTIN","SALESMAN","7698","1981/9/28","1250.00","1400.00","30"
"7698","BLAKE","MANAGER","7839","1981/5/1","2850.00","","30"
"7782","CLARK","MANAGER","7839","1981/6/9","2450.00","","10"
"7788","SCOTT","ANALYST","7566","1987/4/19","3000.00","","20"
"7839","KING","PRESIDENT","","1981/11/17","5000.00","","10"
"7844","TURNER","SALESMAN","7698","1981/9/8","1500.00","0.00","30"
"7876","ADAMS","CLERK","7788","1987/5/23","1100.00","","20"
"7900","JAMES","CLERK","7698","1981/12/3","950.00","","30"
"7902","FORD","ANALYST","7566","1981/12/3","3000.00","","20"
"7934","MILLER","CLERK","7782","1982/1/23","1300.00","","10"

2)创建外部表

create table emp

(

empno number(4),

ename varchar2(10),

job varchar2(9),

mgr number(4),

hiredate date,

sal number(7,2),

comm number(7,2),

deptno number(2)

)

organization external --指定创建的表是外部表

(

type oracle_loader --外部表访问驱动类型

default directory ext_dir --默认目录,需提前创建

access parameters --设置访问参数,注意先后顺序,否则出错

(

records delimited by newline  --每一行记录用换行做分隔符

badfile ext_dir:'emp.bad'  --产生的bad文件

discardfile ext_dir:'emp.dsc'  --记录相关错误信息文件的位置

logfile ext_dir:'emp.log'  --产生的日志文件

field names all files ignore --去掉文件中的列头或列名部分

fields terminated by ',' optionally enclosed by '"' ldrtrim

reject rows with all null fields --拒绝所有空字段的行

(empno,ename,job,mgr,hiredate char(10) date_format date mask 'yyyy-mm-dd',sal,comm,deptno)) --列定义

location('emp.dat') --指定数据文件位置

)reject limit unlimited; --在创建外部表时最后加入LIMIT子句,表示可以允许错误的发生个数。默认值为零。设定为UNLIMITED则错误不受限制

##################无注释版本##################

create table emp
(
empno number(4),
ename varchar2(10),
job varchar2(9),
mgr number(4),
hiredate date,
sal number(7,2),
comm number(7,2),
deptno number(2)
)
organization external 
(
type oracle_loader 
default directory ext_dir
access parameters 
(
records delimited by newline
badfile ext_dir:'emp.bad'
discardfile ext_dir:'emp.dsc'
logfile ext_dir:'emp.log'
field names all files ignore
fields terminated by ',' optionally enclosed by '"' ldrtrim
reject rows with all null fields
(empno,ename,job,mgr,hiredate char(10) date_format date mask 'yyyy-mm-dd',sal,comm,deptno))
location('emp.dat')
)reject limit unlimited;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值