Importación mediante Oracle SQL*Loader - Amazon Relational Database Service

Importación mediante Oracle SQL*Loader

Puede considerar Oracle SQL*Loader para bases de datos de gran tamaño que contienen un número limitado de objetos. Dado que el proceso de exportación desde una base de datos de origen y de carga en una base de datos de destino es específico del esquema, el siguiente ejemplo crea los objetos del esquema de ejemplo, exporta desde un origen y luego carga los datos en una base de datos de destino.

La forma más sencilla de instalar Oracle SQL*Loader es instalar Oracle Instant Client. Para descargar el software, vaya a https://www.oracle.com/database/technologies/instant-client.html. Para obtener documentación, consulte Instant Client for SQL*Loader, Export and Import (Instant Client para SQL*Loader, exportación e importación) en el manual de Oracle Database Utilities.

Para importar datos mediante Oracle SQL*Loader
  1. Cree una tabla de origen de ejemplo con la siguiente instrucción SQL.

    CREATE TABLE customer_0 TABLESPACE users AS (SELECT ROWNUM id, o.* FROM ALL_OBJECTS o, ALL_OBJECTS x WHERE ROWNUM <= 1000000);
  2. En la instancia de base de datos de RDS para Oracle de destino, cree una tabla de destino para cargar los datos. La cláusula WHERE 1=2 garantiza que copia la estructura de ALL_OBJECTS, pero no copia ninguna de las filas.

    CREATE TABLE customer_1 TABLESPACE users AS (SELECT 0 AS ID, OWNER, OBJECT_NAME, CREATED FROM ALL_OBJECTS WHERE 1=2);
  3. Exporte los datos desde la base de datos de origen a un archivo de texto. En el siguiente ejemplo se utiliza SQL*Plus. Para sus datos, es probable que tenga que generar una script que realice la exportación de todos los objetos de la base de datos.

    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. Cree un archivo de control para describir los datos. Es posible que tenga que escribir un script para realizar este paso.

    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" )

    Si es necesario, copie los archivos generados por el código anterior en un área de ensayo, como una instancia Amazon EC2.

  5. Importe los datos usando SQL*Loader con el nombre de usuario y la contraseña apropiados para la base de datos de destino.

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