oracle 外部表 external table

xiayulai發表於2008-06-03

第一步:建立路徑,並且要保證這個路徑可以被oracle讀寫許可權(因為oracle會在這個路徑下寫外部表的日誌和錯誤的資料)
mkdir /home/oracle/
將需要做外部表的資料(test.txt,test2.txt)放到該目錄下,可以放多個
--copy test.txt,test2.txt to /home/oracle/

第二步:dba使用者執行,建立directory並且授權給oracle的schema。
create directory test as '/home/oracle/';
grant read on directory test to test1;
grant write on directory test to test1;

--登入teset1,執行使用者建立external table
create table resources_ext
(
GMT_CREATE date,
GMT_MODIFIED date,
ID number,
TYPE VARCHAR2(32),
NAME VARCHAR2(256),
VALUE VARCHAR2(256)
) organization external
(type oracle_loader
default directory test
access parameters
(
records delimited by newline
fields terminated by ','
missing field values are null
(
GMT_CREATE date "yyyy-mm-dd hh24:mi:ss"
,GMT_MODIFIED date "yyyy-mm-dd hh24:mi:ss"
,ID
,TYPE
,VALUE
,NAME
)
) location ('test.txt')
);


GMT_CREATE date,
GMT_MODIFIED date,
ID number,
TYPE VARCHAR2(32),
NAME VARCHAR2(256),
VALUE VARCHAR2(256)

這裡是指定目標表結構的欄位順序和型別,
GMT_CREATE date "yyyy-mm-dd hh24:mi:ss" ----此處可以直接將檔案中的字元直接轉化成date型。
,GMT_MODIFIED date "yyyy-mm-dd hh24:mi:ss"
,ID
,TYPE
,VALUE
,NAME
這個是指定那個欄位對應檔案中的哪一列,他的順序決定了向表中寫資料的順序。


外部表不能修改和插入。
當外部表建立完成後,可以透過dba_external_tables和dba_external_locations檢視相應的資訊,
沒有建立時是看不到的。
如果有錯誤,可以在第一步建立的路徑中看到有以外部表名字和一串數字命名的日誌和錯誤的資料資訊(兩個檔案),內容很詳細基本上可以定位是什麼原因。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7312700/viewspace-1005052/,如需轉載,請註明出處,否則將追究法律責任。

相關文章