[oracle@localhost mydir]$ cat samp1.txt
360,Jane,Janus,ST_CLERK,121,17-MAY-2001,3000,0,50,jjanus
361,Mark,Jasper,SA_REP,145,17-MAY-2001,8000,.1,80,mjasper
362,Brenda,Starr,AD_ASST,200,17-MAY-2001,5500,0,10,bstarr
363,Alex,Alda,AC_MGR,145,17-MAY-2001,9000,.15,80,aalda
401,Jesse,Cromwell,HR_REP,203,17-MAY-2001,7000,0,40,jcromwel
402,Abby,Applegate,IT_PROG,103,17-MAY-2001,9000,.2,60,aapplega
403,Carol,Cousins,AD_VP,100,17-MAY-2001,27000,.3,90,ccousins
404,John,Richardson,AC_ACCOUNT,205,17-MAY-2001,5000,0,110,jrichard
SQL> create or replace directory mydir as '/home/oracle/mydir';
Directory created.
SQL> grant read,write on directory mydir to scott;
Grant succeeded.
SQL> conn scott/tiger
Connected.
CREATE TABLE admin_ext_employees
(employee_id NUMBER(4),
first_name VARCHAR2(20),
last_name VARCHAR2(25),
job_id VARCHAR2(10),
manager_id NUMBER(4),
hire_date DATE,
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
department_id NUMBER(4),
email VARCHAR2(25)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY mydir
ACCESS PARAMETERS
(
records delimited by newline
badfile mydir:'badxt%a_%p.bad'
logfile mydir:'logxt%a_%p.log'
fields terminated by ','
missing field values are null
( employee_id, first_name, last_name, job_id, manager_id,
hire_date char date_format date mask "dd-mon-yyyy",
salary, commission_pct, department_id, email
)
)
LOCATION ('samp1.txt')
)
PARALLEL REJECT LIMIT UNLIMITED;
PARALLEL --指定查詢時的並行度
REJECT LIMIT UNLIMITED --指定外部表查詢錯誤數量
執行成功看產生的日志。
[oracle@localhost mydir]$ ls -al
total 20
drwxr-xr-x 2 oracle oinstall 4096 Nov 20 16:12 .
drwx------ 5 oracle oinstall 4096 Nov 20 15:53 ..
-rw-r--r-- 1 oracle oinstall 1413 Nov 20 16:12 logxt000_13688.log
-rw-r--r-- 1 oracle oinstall 1555 Nov 20 16:12 logxt000_16408.log
-rw-r--r-- 1 oracle oinstall 480 Nov 20 15:53 samp1.txt
[oracle@localhost mydir]$ cat logxt000_13688.log
LOG file opened at 11/20/15 16:12:03
Field Definitions for table ADMIN_EXT_EMPLOYEES
Record format DELIMITED BY NEWLINE
Data in file has same endianness as the platform
Rows with all null fields are accepted
Fields in Data Source:
EMPLOYEE_ID CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
FIRST_NAME CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
LAST_NAME CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
JOB_ID CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
MANAGER_ID CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
HIRE_DATE CHAR (80)
Date datatype DATE, date mask dd-mon-yyyy
Terminated by ","
Trim whitespace same as SQL Loader
SALARY CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
COMMISSION_PCT CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
DEPARTMENT_ID CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
EMAIL CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
[oracle@localhost mydir]$ cat logxt000_16408.log
LOG file opened at 11/20/15 16:12:03
Field Definitions for table ADMIN_EXT_EMPLOYEES
Record format DELIMITED BY NEWLINE
Data in file has same endianness as the platform
Rows with all null fields are accepted
Fields in Data Source:
EMPLOYEE_ID CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
FIRST_NAME CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
LAST_NAME CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
JOB_ID CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
MANAGER_ID CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
HIRE_DATE CHAR (80)
Date datatype DATE, date mask dd-mon-yyyy
Terminated by ","
Trim whitespace same as SQL Loader
SALARY CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
COMMISSION_PCT CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
DEPARTMENT_ID CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
EMAIL CHAR (255)
Terminated by ","
Trim whitespace same as SQL Loader
Date Cache Statistics for table ADMIN_EXT_EMPLOYEES
Max Size: 1000
Entries : 1
Hits : 7
Misses : 0
logxt000_16408.log日志比logxt000_13688.log尾部多了一些統計信息。 查看外部表 SQL> select EMPLOYEE_ID,FIRST_NAME from ADMIN_EXT_EMPLOYEES; EMPLOYEE_ID FIRST_NAME ----------- -------------------- 360 Jane 361 Mark 362 Brenda 363 Alex 401 Jesse 402 Abby 403 Carol 404 John 3.外部表修改 能夠使用於alter table下面子句來修改外部表訪問參數 reject limit:ALTER TABLE admin_ext_employees REJECT LIMIT n; project column: ALTER TABLE admin_ext_employees PROJECT COLUMN REFERENCED; ALTER TABLE admin_ext_employees PROJECT COLUMN ALL; default dectory:ALTER TABLE admin_ext_employees DEFAULT DIRECTORY admin_dat2_dir; 查看修改的屬性 SQL> select OWNER,TABLE_NAME,REJECT_LIMIT,DEFAULT_DIRECTORY_NAME,PROPERTY from dba_external_tables; OWNER TABLE_NAME REJECT_LIM DEFAULT_DIRECTORY_NAME PROPERTY ---------- ------------------------------ ---------- ------------------------------ ---------- SCOTT ADMIN_EXT_EMPLOYEES UNLIMITED MYDIR ALL 4.預處理外部表 SQL> create or replace directory mydir as '/home/oracle/mydir'; Directory created. SQL> grant read,write,execute on directory mydir to scott; Grant succeeded. 在/home/oracle/mydir下面創建一個文件
[oracle@localhost mydir]$ cat uncompress
/bin/gzip -cd $1
[oracle@localhost mydir]$ chmod +x uncompress
SQL> conn scott/tiger
Connected.
CREATE TABLE admin_ext_employees
(employee_id NUMBER(4),
first_name VARCHAR2(20),
last_name VARCHAR2(25),
job_id VARCHAR2(10),
manager_id NUMBER(4),
hire_date DATE,
salary NUMBER(8,2),
commission_pct NUMBER(2,2),
department_id NUMBER(4),
email VARCHAR2(25)
)
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY mydir
ACCESS PARAMETERS
(
records delimited by newline
PREPROCESSOR exec_file_dir:'uncompress'
badfile mydir:'badxt%a_%p.bad'
logfile mydir:'logxt%a_%p.log'
fields terminated by ','
missing field values are null
( employee_id, first_name, last_name, job_id, manager_id,
hire_date char date_format date mask "dd-mon-yyyy",
salary, commission_pct, department_id, email
)
)
LOCATION ('samp1.txt.gz')
)
PARALLEL
REJECT LIMIT UNLIMITED;
5.外部表的刪除使用DROP TABLE語句這條語句僅僅刪除數據庫中的介質,對實際數據沒有影響。 SQL> drop table admin_ext_employees; Table dropped. 6.有關外部表的系統權限和對象。 外部表的系統權限 CREATE ANY TABLE ALTER ANY TABLE DROP ANY TABLE SELECT ANY TABLE 外部表的對象權限 ALTER SELECT