一建立目錄
先在系統下建立
$ cd /home/oracle
$ mkdir dir
$ cd dir
$ pwd
再在sqlplus裡建立,讓oracle知道這個目錄
SQL> createdirectory dir as '/home/oracle/dir';
最後授權
SQL> grant all ondirectory dir to public;
二建立資料源檔案
$ cd dir
$ vi prod_my.data
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
檢視
$ cat prod_my.data
三建立外部表external
CREATE TABLEscott.prod_my(
c1 number(5),
c2 varchar2(20),
c3 varchar2(20),
c4 varchar2(30),
c5 number(5),
c6 date,
c7 number(8,3),
c8 number(5,2),
c9 number(5,2),
c10 varchar2(30)
)
ORGANIZATION EXTERNAL (TYPE ORACLE_LOADERDEFAULT DIRECTORY dir
ACCESS PARAMETERS(FIELDS TERMINATED BY ","
OPTIONALLY ENCLOSED BY '"'
MISSING FIELD VALUES ARE NULL)
LOCATION('prod_my.data'));
解釋
FIELDS TERMINATED BY"," 代表列與列之間用 ","單引号分割
OPTIONALLY ENCLOSED BY"" 代表列值是一句話用("")雙引号引起來
MISSING FIELD VALUES ARENULL 代表(,,)逗号與逗号之間可以是空值
四查詢外部表
col c2 for a8
col c3 for a10
col c4 for a10
col c10 for a10
selectc1,c2,c3,c5,c6,c7,c8,c9 from scott.prod_my;
C1 C2 C3 C5 C6 C7 C8 C9
---------- ------------------ ---------- --------- ---------- ---------- ----------
360 Jane Janus 121 17-MAY-01 3000 0 50
361 Mark Jasper 145 17-MAY-01 8000 .1 80
362 Brenda Starr 200 17-MAY-01 5500 0 10
363 Alex Alda 145 17-MAY-01 9000 .15 80
401 Jesse Cromwell 203 17-MAY-01 7000 0 40
402 Abby Applegate 103 17-MAY-01 9000 .2 60
403 Carol Cousins 100 17-MAY-01 27000 .3 90
404 John Richardson 205 17-MAY-01 5000 0 110
select* from scott.prod_my; 檢視全部資訊
然後将外部表導入到資料庫中
一先建立實體的表
CREATE TABLEscott.ldr(
c1 number(5),
c2 varchar2(20),
c3 varchar2(20),
c4 varchar2(30),
c5 number(5),
c6 date,
c7 number(8,3),
c8 number(5,2),
c9 number(5,2),
c10 varchar2(30)
);
二再建立sqlloader控制檔案
$ cd dir
$ vi ldr.ctl
load data
infile'prod_my.data'
append
into table scott.ldr
fields terminated by','
optionally enclosedby '"'
TRAILING NULLCOLS
(
c1,
c2,
c3,
c4,
c5,
c6,
c7,
c8,
c9,
c10
)
開始導入
/u01/app/oracle/product/11gr2/db_1/bin
[oracle@HE3bin]$ ./sqlldr scott/tiger control='/home/oracle/sqlloader/ldr.ctl'log='/home/oracle/sqlloader/ldr.log'
第一步先問檔案的位置查處後,修改 infile【/home/oracle/dir/prod_my.data】
第二步再建立實體的表建立後輸入表名 into table 【scott.ldr】
第三步在infile 'prod_my.data'下面,加入一個參數【append】
第四步增加一行TRAILING NULLCOLS,
注意:最後不要加【 ; 】分号結束,否則會報錯
append:代表如果表裡有資料可以繼續添加