该线程包含一些使用外部表的有用技巧。
使用外部表
=======================
1.将表指向外部文件。 如果外部文件中的数据被更改,则表中的数据也将发生变化。
2.外部表可以以与联接,视图中的标准表相同的方式进行查询...并且可以使用外部表上的所有类型的功能。
3.获取有关外部表的信息,查询“ USER_EXTERNAL_TABLES”数据字典视图。
4.对于此查询“ USER_EXTERNAL_LOCATIONS”,“ USER_EXTERNAL_TABLES”不显示表点的外部文件名。
5.用户无法在外部表上执行任何“ DML”操作。
6.外部表不能被索引。
7,不能在外部表上指定约束,即使不是非NULL或外键约束也是如此。
首先使用以下示例代码创建目录。
CREATE DIRECTORY MYDIR AS 'D:\';
将源文件放置在指定目录中(上述路径)
文件中的数据应特定于匹配表结构。
下一个
向指定用户授予读写权限。
GRANT READ,WRITE ON DIRECTORY MYDIR TO DEBASIS;
创建EXTERNAL TABLE的示例代码
create table extemp1
(
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 MYDIR
ACCESS PARAMETERS
(
RECORDS DELIMITED BY NEWLINE SKIP 1
FIELDS TERMINATED BY ','
(
empno CHAR,
ename CHAR,
JOB CHAR,
MGR CHAR,
HIREDATE CHAR,
SAL CHAR,
COMM CHAR,
DEPTNO CHAR
))
LOCATION('DATA.LST')
)
REJECT LIMIT 1
;
示例2
======================
CREATE TABLE SCOTT.et
(
id NUMBER(8,3),
name VARCHAR2(10)
)
ORGANIZATION EXTERNAL
( TYPE ORACLE_LOADER
DEFAULT DIRECTORY DDD
ACCESS PARAMETERS
( RECORDS DELIMITED BY NEWLINE
BADFILE DDD:'et.bad'
DISCARDFILE DDD:'et.dsc'
LOGFILE DDD:'et.log'
READSIZE 512
DATE_CACHE 1000
SKIP 0
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
REJECT ROWS WITH ALL NULL FIELDS
(
id CHAR,
name CHAR
) )
LOCATION (DDD:'aa.txt')
)
REJECT LIMIT Unlimited
NOPARALLEL
NOMONITORING;
From: https://bytes.com/topic/oracle/insights/768501-using-external-table