sql >> Databáze >  >> RDS >> Oracle

Oracle Hromadné vložení pomocí SQL Developer

SQL*Loader je můj oblíbený způsob hromadného načítání velkých objemů dat do Oracle. Použijte možnost vložení přímé cesty pro maximální rychlost, ale pochopte dopady zatížení přímou cestou (například všechna data jsou vložena za horní hranici, což je v pořádku, pokud zkrátíte tabulku). Má dokonce toleranci pro špatné řádky, takže pokud vaše data obsahují „nějaké“ chyby, může stále fungovat.

SQL*Loader dokáže pozastavit indexy a všechny je sestavit na konci, díky čemuž je hromadné vkládání velmi rychlé.

Příklad volání 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 by vypadala nějak takto:

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

Alternativně... pokud pouze kopírujete celý obsah jedné tabulky do druhé, napříč databázemi, můžete to udělat, pokud váš DBA nastaví DBlink (30 sekundový proces), za předpokladu, že vaše DB je nastavena s prostorem pro opakování splňte to.

truncate table my_schema.my_table;

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

Použití /* +append */ hint může stále využívat přímé vložení cesty.




  1. záloha mysqli db s php

  2. Jak popsat problém s výkonem v relační databázi?

  3. codeIgniter místo toho použijte mysql_real_escape_string(). Problém s připojením k databázi

  4. Sequelize.js:Dotaz pro není v poli ($ne pro položky v poli)