

# Trabalhar com tabelas externas no RDS para Oracle
<a name="Appendix.Oracle.CommonDBATasks.External_Tables"></a>

*Tabelas externas do Oracle *são tabelas com dados que não estão no banco de dados. Em vez disso, os dados estão em arquivos externos que o banco de dados pode acessar. Usando tabelas externas, você pode acessar dados sem carregá-los no banco de dados. Para ter mais informações sobre tabelas externas, consulte [Managing External Tables](http://docs.oracle.com/database/121/ADMIN/tables.htm#ADMIN01507) (Gerenciar tabelas externas) na documentação do Oracle. 

Com o Amazon RDS, você pode armazenar arquivos de tabela externos em objetos de diretório. Você pode criar um objeto de diretório ou pode usar um objeto predefinido no banco de dados Oracle, como o diretório DATA\$1PUMP\$1DIR. Para obter informações sobre como criar os objetos de diretório, consulte [Criar e eliminar diretórios no espaço de armazenamento de dados principal](Appendix.Oracle.CommonDBATasks.Misc.md#Appendix.Oracle.CommonDBATasks.NewDirectories). Você pode consultar a visualização ALL\$1DIRECTORIES a fim de listar os objetos de diretório para a instância de banco de dados Oracle do Amazon RDS.

**nota**  
Os objetos de diretório apontam para o espaço de armazenamento físico de dados principal (volume do Amazon EBS) usado pela instância. O espaço usado, juntamente com arquivos de dados, logs redo, auditoria, rastreamento e outros arquivos, conta em relação ao armazenamento alocado.

Você pode mover um arquivo de dados externo de um banco de dados Oracle para outro usando o pacote [ DBMS\$1FILE\$1TRANSFER](https://docs.oracle.com/database/121/ARPLS/d_ftran.htm#ARPLS095) ou o pacote [UTL\$1FILE](https://docs.oracle.com/database/121/ARPLS/u_file.htm#ARPLS069). O arquivo de dados externo é movido de um diretório no banco de dados de origem para o diretório especificado no banco de dados de destino. Para obter informações sobre como utilizar o `DBMS_FILE_TRANSFER`, consulte [Importar usando o Oracle Data Pump](Oracle.Procedural.Importing.DataPump.md).

Depois de mover o arquivo de dados externo, você poderá criar uma tabela externa com ele. O seguinte exemplo cria uma tabela externa que usa o arquivo `emp_xt_file1.txt` no diretório USER\$1DIR1.

```
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;
```

Suponhamos que você queira migrar dados que estejam em uma instância de banco de dados Oracle do Amazon RDS para um arquivo de dados externo. Nesse caso, você pode preencher o arquivo de dados externo criando uma tabela externa e selecionando os dados da tabela no banco de dados. Por exemplo, a instrução SQL a seguir cria a tabela externa `orders_xt` consultando a tabela `orders` no banco de dados.

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

Neste exemplo, os dados são preenchidos no arquivo `orders_xt.dmp` no diretório DATA\$1PUMP\$1DIR.