外部表

外部表只能在Oracle 9i之後來使用。簡單地說,外部表,是指不存在於資料庫中的表。通過向Oracle提供描述外部表的元數據,我們可以把一個作業系統檔案當成一個唯讀的資料庫表,就像這些數據存儲在一個普通資料庫表中一樣來進行訪問。外部表是對資料庫表的延伸。

基本介紹

  • 中文名:外部表
  • 定義:不存在於資料庫中的表
  • 作用:對資料庫表的延伸
  • 使用範圍:Oracle 9i之後
外部表的特性,創建外部表,外部表的創建語法,例子,

外部表的特性

(1) 位於檔案系統之中,按一定格式分割,如文本檔案或者其他類型的表可以作為外部表。
(2) 對外部表的訪問可以通過SQL語句來完成,而不需要先將外部表中的數據裝載進資料庫中。
(3) 外部數據表都是唯讀的,因此在外部表不能夠執行DML操作,也不能創建索引。
(4) ANALYZE語句不支持採集外部表的統計數據,應該使用DMBS_STATS包來採集外部表的統計數據。
(5) 可以查詢操作和連線。可以並行操作。
(6) 數據在資料庫的外部組織,是作業系統檔案。
(7) 作業系統檔案在資料庫中的標誌是通過一個邏輯目錄來映射的。

創建外部表

使用CREATE TABLE語句的ORGANIZATION EXTERNAL子句來創建外部表。外部表不分配任何盤區,因為僅僅是在數據字典中創建元數據。

外部表的創建語法

create table table_name
(col1 datatype1,col2 datatype2,col3 datatype3)
organization external
(.....)

例子

我們假設有這樣一個檔案(DATA.TXT):
1 this is a string
2 這裡是個字元串
3 ABC
要把這樣一個檔案映射成外部表,有以下工作要做:
首先,我們需要為Oracle創建一個Directory,
創建方式為,在資料庫中執行,須用DBA用戶創建,並給套用授權。
create directory EXT_TABLE_DIR as '/home/oracle/app/oracle/oradata/php/'
(注意“/home/oracle/app/oracle/oradata/php/”是一個存在於Oracle資料庫伺服器本身上邊的實際存在的資料夾;)
然後,將DATA.TXT檔案拷貝到上述資料夾下;
最後,創建一個對應外部表,
create table EXT_TABLE_NAME
(
COL_1 NUMBER,
COL_2 VARCHAR2(512)
)
organization external
(
type oracle_loader
default directoryEXT_TABLE_DIR
access parameters ( fields terminated by '|')
location ('DATA.TXT')
)
reject limit unlimited;
注意EXT_TABLE_NAME是要映射成的外部表名稱,EXT_TABLE_DIR是第一步里我們創建的Oracle的Directory,“|”是檔案里的分割符,DATA.TXT是檔案名稱。
需要補充的是,最後有一句“reject limit unlimited”,告訴Oracle這個外部表沒有行數限制。否則,當檔案中的數據量超過200萬行時,在對表進行檢索時,就會出現ORA-30653,“reject limit reached”錯誤。

相關詞條

熱門詞條

聯絡我們