sql >> Databasteknik >  >> RDS >> Oracle

Oracle Bulk Insert med SQL Developer

SQL*Loader är mitt favoritsätt att massladda stora datavolymer till Oracle. Använd alternativet för insättning av direkt väg för maxhastighet men förstå effekterna av laster i direkt väg (till exempel infogas all data förbi högvattenmärket, vilket är bra om du trunkerar tabellen). Den har till och med en tolerans för dåliga rader, så om din data har "några" misstag kan den fortfarande fungera.

SQL*Loader kan stänga av index och bygga dem alla i slutet, vilket gör massinsättning mycket snabb.

Exempel på ett SQL*Loader-anrop:

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

Och mydata.ctl skulle se ut ungefär så här:

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

Alternativt... om du bara kopierar hela innehållet i en tabell till en annan, över databaser, kan du göra detta om din DBA ställer in en DBlink (en 30 sekunders process), förutsatt att din DB är inställd med redo-utrymmet för att åstadkomma detta.

truncate table my_schema.my_table;

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

Användningen av /* +append */ tips kan fortfarande använda direkt sökvägsinfogning.




  1. varför vi behöver gå med vänster och höger

  2. 11 sätt att hitta dubbletter av rader som har en primärnyckel i Oracle

  3. mysql ft_min_word_len ändring på ubuntu fungerar inte

  4. Vad är det bästa sättet i MySQL att få hur många timmar gammalt något är?