Oracle中使用外部表的技术指南(oracle中创建外部表)
Oracle中使用外部表的技术指南
外部表是Oracle数据库的一种特殊类型的表,可以引用存放在操作系统文件系统中的数据文件。使用外部表可以避免在数据库中复制一份数据文件,节省数据库存储空间。本文将介绍如何在Oracle中使用外部表。
1.创建外部表
创建外部表的语法与创建普通表的语法类似,只是在定义列时需要指定列的数据类型和存放数据的文件路径。以下是一个简单的创建外部表的示例:
CREATE TABLE emp_ext
(
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_data_dir
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ‘,’
MISSING FIELD VALUES ARE NULL
(
empno,
ename,
job,
mgr,
hiredate DATE ‘yyyy-mm-dd’,
sal,
comm,
deptno
)
)
LOCATION (’emp_ext.csv’)
)
REJECT LIMIT UNLIMITED;
2.查询外部表
查询外部表与查询普通表一样,只需要使用SELECT语句即可。以下是一个查询外部表的示例:
SELECT empno, ename, job, mgr, hiredate, sal, comm, deptno
FROM emp_ext
WHERE sal > 5000
ORDER BY empno;
3.修改外部表
由于外部表的数据并不存储在数据库中,因此无法直接修改外部表。如果需要修改外部表中的数据,需要先修改数据文件,然后重新加载数据文件到外部表中。以下是一个修改外部表的示例:
— 修改数据文件
vi emp_ext.csv
1,Martin,MANAGER,7839,1981-09-28,5000.00,,10
2,Allen,SALESMAN,7698,1981-02-22,1600.00,300.00,30
3,Clark,MANAGER,7839,1981-06-09,2850.00,,10
4,Adams,CLERK,7788,1987-05-23,1100.00,,20
5,King,PRESIDENT,,1981-11-17,5000.00,,10
6,Turner,SALESMAN,7698,1984-09-08,1500.00,0.00,30
7,James,CLERK,7698,1981-12-03,950.00,,30
8,Hismith,CLERK,7788,1986-11-28,800.00,,20
9,Ford,ANALYST,7566,1983-12-03,3000.00,,20
10,Miller,CLERK,7782,1982-01-23,1300.00,,10
— 重新加载数据文件到外部表中
ALTER TABLE emp_ext
LOCATION (’emp_ext.csv’)
RECOVERABLE;
4.删除外部表
删除外部表与删除普通表一样,只需要使用DROP TABLE语句即可。以下是一个删除外部表的示例:
DROP TABLE emp_ext;
总结:
– 外部表可以引用存放在操作系统文件系统中的数据文件,可以避免在数据库中复制一份数据文件。
– 创建外部表的语法与创建普通表的语法类似,只是在定义列时需要指定列的数据类型和存放数据的文件路径。
– 查询外部表与查询普通表一样,只需要使用SELECT语句。
– 由于外部表的数据并不存储在数据库中,因此无法直接修改外部表。如果需要修改外部表中的数据,需要先修改数据文件,然后重新加载数据文件到外部表中。
– 删除外部表与删除普通表一样,只需要使用DROP TABLE语句即可。