Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Oracle Bulk Insert za pomocą SQL Developer

SQL*Loader to mój ulubiony sposób na zbiorcze ładowanie dużych ilości danych do Oracle. Użyj opcji wstawiania ścieżki bezpośredniej, aby uzyskać maksymalną prędkość, ale zrozum wpływ obciążeń ze ścieżką bezpośrednią (na przykład wszystkie dane są wstawiane za znakiem wysokiej wody, co jest w porządku, jeśli obcinasz tabelę). Ma nawet tolerancję na złe wiersze, więc jeśli Twoje dane zawierają „pewne” błędy, nadal może działać.

SQL*Loader może zawiesić indeksy i zbudować je wszystkie na końcu, co sprawia, że ​​wstawianie zbiorcze jest bardzo szybkie.

Przykład wywołania SQL*Loader:

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

A mydata.ctl wyglądałby mniej więcej tak:

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

Alternatywnie... jeśli po prostu kopiujesz całą zawartość jednej tabeli do drugiej, między bazami danych, możesz to zrobić, jeśli Twój DBA skonfiguruje DBlink (proces 30-sekundowy), zakładając, że Twoja baza danych jest skonfigurowana z miejscem na ponowne wykonanie to osiągnąć.

truncate table my_schema.my_table;

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

Użycie /* +append */ wskazówka może nadal korzystać z bezpośredniego wstawiania ścieżki.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. DBMS_SCHEDULER.DROP_JOB tylko jeśli istnieje

  2. Wiele pól Oracle w Select IN Parameter

  3. Jak określić język (angielski, chiński...) danego ciągu znaków w Oracle?

  4. Mam program, który chcę porównać przynieść daty i przynieść pożądane dane

  5. APEX:Pobierz BLOB z tabeli tymczasowej