Importar usando o Oracle SQL*Loader - Amazon Relational Database Service

Importar usando o Oracle SQL*Loader

Você pode usar o Oracle SQL*Loader 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*Loader é instalar o Oracle Instant Client. Para baixar o software, acesse https://www.oracle.com/database/technologies/instant-client.html. Para obter a documentação, consulte Instant Client for SQL*Loader, exportação e importação no manual Utilitários do banco de dados Oracle.

Para importar dados usando o Oracle SQL*Loader
  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);
  2. 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);
  3. Exporte os dados do banco de dados de origem para um arquivo de texto. O exemplo a seguir usa SQL*Plus. 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
  4. 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.

  5. Importe os dados usando o SQL*Loader 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