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语句即可。


数据运维技术 » Oracle中使用外部表的技术指南(oracle中创建外部表)