sql >> Base de Datos >  >> RDS >> Oracle

Inserción masiva de Oracle con SQL Developer

SQL*Loader es mi forma favorita de cargar grandes volúmenes de datos en Oracle. Use la opción de inserción de ruta directa para la velocidad máxima, pero comprenda los impactos de las cargas de ruta directa (por ejemplo, todos los datos se insertan más allá de la marca de agua alta, lo cual está bien si trunca su tabla). Incluso tiene una tolerancia para las filas incorrectas, por lo que si sus datos tienen "algunos" errores, aún puede funcionar.

SQL*Loader puede suspender índices y compilarlos todos al final, lo que hace que la inserción masiva sea muy rápida.

Ejemplo de una llamada SQL*Loader:

$SQLDIR/sqlldr /@MyDatabase direct=false silent=feedback \
    control=mydata.ctl log=/apps/logs/mydata.log bad=/apps/logs/mydata.bad \
    rows=200000

Y mydata.ctl se vería así:

LOAD DATA
INFILE '/apps/load_files/mytable.dat'
INTO TABLE my_schema.my_able
FIELDS TERMINATED BY "|"
 (ORDER_ID,
  ORDER_DATE,
  PART_NUMBER,
  QUANTITY)

Alternativamente ... si solo está copiando todo el contenido de una tabla a otra, a través de bases de datos, puede hacer esto si su DBA configura un DBlink (un proceso de 30 segundos), suponiendo que su base de datos esté configurada con el espacio de rehacer para lograr esto.

truncate table my_schema.my_table;

insert into my_schema.my_table
select * from [email protected]_remote_db;

El uso de /* +append */ la sugerencia aún puede hacer uso de la inserción de ruta directa.