ORACLE外部表的應用例項

itpub120發表於2006-10-25

ORACLE外部表的應用例項

Oracle 9i 的一項新特性就是 External Table,它就象通常的資料庫表一樣,擁有欄位和資料型別約束,並且可以查詢,但是表中的資料卻不儲存在資料庫中,而是在與資料庫相關聯的普通外部檔案裡。當你查詢 External Table 時,Oracle 將解析該檔案並返回符合條件的資料,就象該資料儲存在資料庫表中一樣。
具體的定義可以參見《 Oracle 概念手冊》,以下的幾點需要注意:

:外部表的描述:

> 建立的語法類似於: "CREATE TABLE ... ORGANIZATION EXTERNAL"
> 資料在資料庫的外部組織,是作業系統檔案。
> 作業系統檔案在資料庫中的標誌是透過一個邏輯目錄來對映的。
> 資料是隻讀的。(外部表相當於一個只讀的虛表)
> 不可以在上面執行任何 DML 操作,不可以建立索引。
> 可以查詢操作和連線。可以並行操作。

例子:
假如有如下兩個資料檔案:
1: 資料檔案的格式
F1.TXT檔案:

13234,FIRSTS
46464,TESTA

F2.TEXT檔案:

13234,SECONDS
46464,TEST
2:建立目錄,並進行授權;
sql> create directory test_dir as 'E:temp';
sql>grant read,write on directory test_dir to users;
注意:建立完畢邏輯目錄之後要把平面檔案複製到該目錄下,另外還要注意檔名字不要寫錯。
3:建立外部表:
create table test_table
(ms_no varchar(20),
tip varchar(20),
descs varchar(20))
ORGANIZATION EXTERNAL
(
TYPE ORACLE_LOADER
DEFAULT DIRECTORY test_dir
ACCESS Parameters
(
RECORDS DELIMITED BY NEWLINE
badfile 'bad_dev.txt'
LOGFILE 'log_dev.txt'
FIELDS TERMINATED BY ','
MISSING FIELD VALUES ARE NULL
(ms_no,tip,descs)
)
LOCATION('F1.txt','F2.txt')
)
;
表建立完成.當然也可以匯入一個檔案

4:進行SELECT 操作看是否正確;
SQL>select * from test_table
結果如下:
MS_NO TIP DESCS
-------------------- -------------------- --------------------
13234 FIRSTS
46464 TESTA
13234 SECONDS
46464 TEST

: 如何得到外部表的有關資訊:
SQL> DESC DBA_EXTERNAL_TABLES;
Name Type Nullable
----------------------- ------------- - ----
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
TYPE_OWNER CHAR(3) Y
TYPE_NAME VARCHAR2(30)
DEFAULT_DIRECTORY_OWNER CHAR(3) Y
DEFAULT_DIRECTORY_NAME VARCHAR2(30)
REJECT_LIMIT VARCHAR2(40) Y
ACCESS_TYPE VARCHAR2(7) Y
ACCESS_PARAMETERS VARCHAR2(4000) Y

SQL>SELECT OWNER,TABLE_NAME,DEFAULT_DIRECTORY_NAME,ACCESS_PARAMETERSFRFROM
DBA_EXTERNAL_TABLES;
可以得到外部表的相關資訊;


:如何得到外部路徑的資訊:
SQL> desc DBA_EXTERNAL_LOCATIONS;
得到該表結構:
Name Type Nullable
--------------- -------------- --------
OWNER VARCHAR2(30)
TABLE_NAME VARCHAR2(30)
LOCATION VARCHAR2(4000) Y
DIRECTORY_OWNER CHAR(3) Y
DIRECTORY_NAME VARCHAR2(30) Y

SQL> select * from DBA_EXTERNAL_LOCATIONS;
得到具體資訊;


相關技術貼子聯結

[@more@]

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

相關文章