Oracle
 sql >> Base de données >  >> RDS >> Oracle

Insertion en bloc Oracle à l'aide de SQL Developer

SQL*Loader est mon moyen préféré pour charger en masse de gros volumes de données dans Oracle. Utilisez l'option d'insertion de chemin direct pour une vitesse maximale, mais comprenez les impacts des charges de chemin direct (par exemple, toutes les données sont insérées au-delà de la ligne des hautes eaux, ce qui est bien si vous tronquez votre table). Il a même une tolérance pour les mauvaises lignes, donc si vos données ont "quelques" erreurs, cela peut toujours fonctionner.

SQL*Loader peut suspendre les index et les construire tous à la fin, ce qui rend l'insertion en masse très rapide.

Exemple d'appel SQL*Loader :

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

Et le mydata.ctl ressemblerait à ceci :

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

Alternativement ... si vous copiez simplement l'intégralité du contenu d'une table dans une autre, à travers les bases de données, vous pouvez le faire si votre DBA configure un DBlink (un processus de 30 secondes), en supposant que votre base de données est configurée avec l'espace redo pour accomplir cela.

truncate table my_schema.my_table;

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

L'utilisation du /* +append */ l'astuce peut toujours utiliser l'insertion directe de chemin.