sql >> Database >  >> RDS >> Oracle

Oracle Bulk Insert met SQL Developer

SQL*Loader is mijn favoriete manier om grote datavolumes in bulk in Oracle te laden. Gebruik de optie voor het invoegen van direct pad voor maximale snelheid, maar begrijp de impact van belastingen via het directe pad (alle gegevens worden bijvoorbeeld ingevoegd voorbij de hoogwatermarkering, wat prima is als u uw tabel afkapt). Het heeft zelfs een tolerantie voor slechte rijen, dus als uw gegevens "enige" fouten bevatten, kan het nog steeds werken.

SQL*Loader kan indexen opschorten en ze allemaal aan het einde bouwen, waardoor bulkinvoeging erg snel gaat.

Voorbeeld van een SQL*Loader-aanroep:

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

En de mydata.ctl zou er ongeveer zo uitzien:

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

Als alternatief ... als u gewoon de volledige inhoud van de ene tabel naar de andere kopieert, over databases heen, kunt u dit doen als uw DBA een DBlink instelt (een proces van 30 seconden), ervan uitgaande dat uw DB is ingesteld met de ruimte voor opnieuw uitvoeren om bereik dit.

truncate table my_schema.my_table;

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

Het gebruik van de /* +append */ hint kan nog steeds gebruik maken van direct pad invoegen.




  1. XMLTABLE in oracle - XQuery dynamisch type komt niet overeen:verwachte singleton-reeks - kreeg reeks met meerdere items

  2. Ik wil de database herstellen met een ander schema

  3. MySQL Workbench koppelen aan mijn externe server

  4. ORA-12638:Ophalen van inloggegevens mislukt