

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

# 在 RDS for Oracle 與 Amazon EFS 檔案系統之間傳輸檔案
<a name="oracle-efs-integration.transferring"></a>

若要在 RDS for Oracle 執行個體與 Amazon EFS 檔案系統之間傳輸檔案，請至少建立一個 Oracle 目錄，然後設定 EFS 檔案系統許可，以控制資料庫執行個體存取。

**Topics**
+ [建立 Oracle 目錄](#oracle-efs-integration.transferring.od)
+ [在 EFS 檔案系統之間傳輸資料：範例](#oracle-efs-integration.transferring.upload)

## 建立 Oracle 目錄
<a name="oracle-efs-integration.transferring.od"></a>

若要建立 Oracle 目錄，請使用程序 `rdsadmin.rdsadmin_util.create_directory_efs`。 程序具有下列參數。


****  

| 參數名稱 | 資料類型 | 預設 | 必要 | 描述 | 
| --- | --- | --- | --- | --- | 
| `p_directory_name` | VARCHAR2 | – | 是 | Oracle 目錄的名稱。 | 
| `p_path_on_efs` | VARCHAR2 | – | 是 | EFS 檔案系統上的路徑。路徑名稱的字首會使用模式 `/rdsefs-{{fsid}}/`，其中 {{fsid}} 是 EFS 檔案系統 ID 的預留位置。<br />例如，如果您的 EFS 檔案系統已命名為 `fs-1234567890abcdef0`，且您在名為 `mydir` 的這個檔案系統上建立了一個子目錄，則您可以指定下列值：<pre>/rdsefs-fs-1234567890abcdef0/mydir</pre> | 

假設您在 EFS 檔案系統 `fs-1234567890abcdef0` 上建立了名為 `/datapump1` 的子目錄。下列範例會建立一個 Oracle 目錄 `DATA_PUMP_DIR_EFS`，指向 EFS 檔案系統上的 `/datapump1` 目錄。`p_path_on_efs` 參數的檔案系統路徑值以字串 `/rdsefs-` 為字首。

```
BEGIN
  rdsadmin.rdsadmin_util.create_directory_efs(
    p_directory_name => 'DATA_PUMP_DIR_EFS', 
    p_path_on_efs    => '/rdsefs-{{fs-1234567890abcdef0}}/{{datapump1}}');
END;
/
```

## 在 EFS 檔案系統之間傳輸資料：範例
<a name="oracle-efs-integration.transferring.upload"></a>

下列範例使用 Oracle Data Pump 將名為 `MY_TABLE` 的資料表匯出至檔案 `datapump.dmp`。此檔案位於 EFS 檔案系統上。

```
DECLARE
  v_hdnl NUMBER;
BEGIN
  v_hdnl := DBMS_DATAPUMP.OPEN(operation => 'EXPORT', job_mode => 'TABLE', job_name=>null);
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump.dmp',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_dump_file);
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump-exp.log',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_log_file);
  DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')');
  DBMS_DATAPUMP.START_JOB(v_hdnl);
END;
/
```

下列範例使用 Oracle Data Pump，從檔案 `datapump.dmp` 中匯入名為 `MY_TABLE` 的資料表。此檔案位於 EFS 檔案系統上。

```
DECLARE
  v_hdnl NUMBER;
BEGIN
  v_hdnl := DBMS_DATAPUMP.OPEN(
    operation => 'IMPORT',
    job_mode  => 'TABLE',
    job_name  => null);
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump.dmp',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_dump_file );
  DBMS_DATAPUMP.ADD_FILE(
    handle    => v_hdnl,
    filename  => 'datapump-imp.log',
    directory => 'DATA_PUMP_DIR_EFS',
    filetype  => dbms_datapump.ku$_file_type_log_file);
  DBMS_DATAPUMP.METADATA_FILTER(v_hdnl,'NAME_EXPR','IN (''MY_TABLE'')');
  DBMS_DATAPUMP.START_JOB(v_hdnl);
END;
/
```

如需詳細資訊，請參閱[將資料匯入 Amazon RDS 上的 Oracle](Oracle.Procedural.Importing.md)。