

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 在 RDS for Oracle 中使用外部資料表
<a name="Appendix.Oracle.CommonDBATasks.External_Tables"></a>

*Oracle 外部資料表*，指的是該資料表所具有的資料不在資料庫中。反而資料是位在資料庫可以存取的外部檔案中。您可以使用外部資料表來存取資料，而不需將資料載入資料庫。如需外部資料表的詳細資訊，請參閱 Oracle 文件中的[管理外部資料表](http://docs.oracle.com/database/121/ADMIN/tables.htm#ADMIN01507)。

您可以使用 Amazon RDS 在目錄物件中儲存外部資料表檔案。您可以建立目錄物件，也可以使用 Oracle 資料庫中預先定義的目錄物件，例如 DATA\$1PUMP\$1DIR 目錄。如需建立目錄物件的詳細資訊，請參閱 [在主要資料儲存空間中建立和捨棄目錄](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories)。您可以查詢 ALL\$1DIRECTORIES 檢視，來列出您 Amazon RDS Oracle 資料庫執行個體的目錄物件。

**注意**  
目錄物件會指向您執行個體使用的主要資料儲存空間 (Amazon EBS 磁碟區)。根據配置的儲存體來計算的已使用空間 (以及資料檔案、重做日誌、稽核、追蹤和其他檔案)。

您可以使用 [DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/database/121/ARPLS/d_ftran.htm#ARPLS095) 套件或 [UTL\$1FILE](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS069) 套件，在不同 Oracle 資料庫之間移動外部資料檔案。外部資料檔案會從來源資料庫上的目錄，移動至目的地資料庫上指定的目錄。如需使用 `DBMS_FILE_TRANSFER` 的相關資訊，請參閱 [使用 Oracle Data Pump 匯入](Oracle.Procedural.Importing.DataPump.md)。

移動外部資料檔案後，該檔案即可用來建立外部資料表。下列範例會建立採用 USER\$1DIR1 目錄中 `emp_xt_file1.txt` 檔案的外部資料表。

```
CREATE TABLE emp_xt (
  emp_id      NUMBER,
  first_name  VARCHAR2(50),
  last_name   VARCHAR2(50),
  user_name   VARCHAR2(20)
)
ORGANIZATION EXTERNAL (
  TYPE ORACLE_LOADER
  DEFAULT DIRECTORY USER_DIR1
  ACCESS PARAMETERS (
    RECORDS DELIMITED BY NEWLINE
    FIELDS TERMINATED BY ','
    MISSING FIELD VALUES ARE NULL
    (emp_id,first_name,last_name,user_name)
  )
  LOCATION ('emp_xt_file1.txt')
)
PARALLEL
REJECT LIMIT UNLIMITED;
```

假設您要將 Amazon RDS Oracle 資料庫執行個體中的資料移動至外部資料表檔案。在此情況下，您可以透過建立外部資料表並從資料庫中的資料表選取資料，來填入外部資料檔案。例如，下列 SQL 陳述式會透過查詢資料庫中的 `orders_xt` 資料表來建立 `orders` 外部資料表。

```
CREATE TABLE orders_xt
  ORGANIZATION EXTERNAL
   (
     TYPE ORACLE_DATAPUMP
     DEFAULT DIRECTORY DATA_PUMP_DIR
     LOCATION ('orders_xt.dmp')
   )
   AS SELECT * FROM orders;
```

在此範例中，資料會填入 DATA\$1PUMP\$1DIR 目錄中的 `orders_xt.dmp` 檔案。