

# Importar usando o Oracle SQL\$1Loader
<a name="Oracle.Procedural.Importing.SQLLoader"></a>

Você pode usar o Oracle SQL\$1Loader para bancos de dados grandes que contêm um número limitado de objetos. Como o processo de exportação de um banco de dados de origem e carregamento em um banco de dados de destino é específico para o esquema, o exemplo a seguir cria os objetos de esquema de amostra, exporta de uma origem, depois carrega os dados em um banco de dados de destino. 

A maneira mais fácil de instalar o Oracle SQL\$1Loader é instalar o Oracle Instant Client. Para baixar o software, acesse [https://www.oracle.com/database/technologies/instant-client.html](https://www.oracle.com/database/technologies/instant-client.html). Para obter a documentação, consulte [Instant Client for SQL\$1Loader, exportação e importação](https://docs.oracle.com/en/database/oracle/oracle-database/21/sutil/instant-client-sql-loader-export-import.html#GUID-FF1B6F75-09F5-4911-9317-9776FAD15965) no manual *Utilitários do banco de dados Oracle*.

**Para importar dados usando o Oracle SQL\$1Loader**

1. Crie uma tabela de origem de exemplo usando a seguinte instrução SQL.

   ```
   CREATE TABLE customer_0 TABLESPACE users 
      AS (SELECT ROWNUM id, o.* 
          FROM   ALL_OBJECTS o, ALL_OBJECTS x 
          WHERE  ROWNUM <= 1000000);
   ```

1. Na instância de banco de dados de destino do RDS para Oracle, crie uma tabela de destino para carregar os dados. A cláusula `WHERE 1=2` garante que você copie a estrutura do `ALL_OBJECTS`, mas não copie nenhuma linha.

   ```
   CREATE TABLE customer_1 TABLESPACE users 
     AS (SELECT 0 AS ID, OWNER, OBJECT_NAME, CREATED
         FROM   ALL_OBJECTS
         WHERE  1=2);
   ```

1. Exporte os dados do banco de dados de origem para um arquivo de texto. O exemplo a seguir usa SQL\$1Plus. Para os seus dados, você provavelmente precisará gerar um script que faça a exportação para todos os objetos no banco de dados. 

   ```
   ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY/MM/DD HH24:MI:SS'
   
   SET LINESIZE 800 HEADING OFF FEEDBACK OFF ARRAY 5000 PAGESIZE 0
   SPOOL customer_0.out 
   SET MARKUP HTML PREFORMAT ON
   SET COLSEP ','
   
   SELECT id, owner, object_name, created 
   FROM   customer_0; 
   
   SPOOL OFF
   ```

1. Crie um arquivo de controle para descrever os dados. Talvez seja necessário escrever um script para realizar essa etapa. 

   ```
   cat << EOF > sqlldr_1.ctl 
   load data
   infile customer_0.out
   into table customer_1
   APPEND
   fields terminated by "," optionally enclosed by '"'
   (
     id           POSITION(01:10)    INTEGER EXTERNAL,
     owner        POSITION(12:41)    CHAR,
     object_name  POSITION(43:72)    CHAR,
     created      POSITION(74:92)    date "YYYY/MM/DD HH24:MI:SS"
   )
   ```

   Se necessário, copie os arquivos gerados pelo código anterior para uma área de teste, como uma instância do Amazon EC2.

1. Importe os dados usando o SQL\$1Loader com o nome de usuário e a senha apropriados para o banco de dados de destino. 

   ```
   sqlldr cust_dba@targetdb CONTROL=sqlldr_1.ctl BINDSIZE=10485760 READSIZE=10485760 ROWS=1000 
   ```