萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> oracle教程 >> 如何從Oracle 9i SQL*Loader中生成外部表定義

如何從Oracle 9i SQL*Loader中生成外部表定義

Oracle 9i中引入的外部表允許您將一個順序文本文件映射到一個Oracle表定義中。一旦您定義了外部表,您就能應用SQL SELECT語句的所有功能——包括並行查詢——來處理它。 外部表以SQL*Loader為基礎,但定義它們的語法有所不同。如果您已經熟悉SQL*Loader,就有一條捷徑:應用SQL*Loader本身生成一段為您建立外部表定義的腳本。

當您添加一個SQL*Loader命令行時,參數EXTERNAL_TABLE=GENERATE_ONLY,它將把系統使用的控制文件轉譯成一段SQL腳本,並輸出到系統的日志文件中。您可以對日志文件進行編輯,或復制並粘貼這些代碼到新的腳本中。

列表A中是一個用來將不同長度的文件記錄加載到數據庫中的控制文件。執行下面的命令不會加載行,但會在日志文件中輸出一個外部表。列表B中為輸出內容。

sqlldr scott/tiger CONTROL=loademp.ctl

EXTERNAL_TABLE=GENERATE_ONLY

首先,腳本建立一個指向包含輸入文件目錄的目錄對象。目錄對象給特定操作系統的完整路徑名取一些簡短、獨立於平台的名稱。用CREATE DIRECTORY命令建立關聯。要這樣做,我們需要具有CREATE ANY DIRECTORY系統權限,或讓數據庫管理員替您運行它以獲得許可。而且,系統生成的名稱不利記憶。在運行前,最好對腳本進行編輯,取一個更有意義的名稱。

接下來,腳本中包含CREATE TABLE語句本身。這個語句參考目錄對象(如果您修改了上面的名稱,對它進行編輯),文件被加載,執行ORGANIZATION EXTERNAL子句。它還包含描述文本文件布局的語法。

最後,腳本中包含一個在子查詢的外部表中選擇的INSERT(插入)語句范例,以及在處理完畢後終止外部表和目錄的語句。

copyright © 萬盛學電腦網 all rights reserved