Oracle
 sql >> Database >  >> RDS >> Oracle

Inserimento in blocco Oracle utilizzando SQL Developer

SQL*Loader è il mio modo preferito per caricare in blocco grandi volumi di dati in Oracle. Usa l'opzione di inserimento del percorso diretto per la velocità massima ma comprendi l'impatto dei carichi del percorso diretto (ad esempio, tutti i dati vengono inseriti oltre il limite massimo, il che va bene se tronchi la tabella). Ha anche una tolleranza per le righe errate, quindi se i tuoi dati hanno "alcuni" errori possono ancora funzionare.

SQL*Loader può sospendere gli indici e compilarli tutti alla fine, il che rende molto veloce l'inserimento in blocco.

Esempio di una chiamata SQL*Loader:

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

E mydata.ctl sarebbe simile a questo:

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

In alternativa... se stai semplicemente copiando l'intero contenuto di una tabella in un altro, attraverso database, puoi farlo se il tuo DBA imposta un DBlink (un processo di 30 secondi), presupponendo che il tuo DB sia impostato con lo spazio di ripristino per realizzare questo.

truncate table my_schema.my_table;

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

L'uso di /* +append */ suggerimento può ancora utilizzare l'inserimento diretto del percorso.