SQL*Loader adalah cara favorit saya untuk memuat volume data besar ke dalam Oracle. Gunakan opsi penyisipan jalur langsung untuk kecepatan maksimal tetapi pahami dampak dari beban jalur langsung (misalnya, semua data dimasukkan melewati tanda air tinggi, yang baik-baik saja jika Anda memotong tabel Anda). Bahkan memiliki toleransi untuk baris yang buruk, jadi jika data Anda memiliki "beberapa" kesalahan, itu masih bisa berfungsi.
SQL*Loader dapat menangguhkan indeks dan membangun semuanya di akhir, yang membuat penyisipan massal menjadi sangat cepat.
Contoh panggilan SQL*Loader:
$SQLDIR/sqlldr /@MyDatabase direct=false silent=feedback \
control=mydata.ctl log=/apps/logs/mydata.log bad=/apps/logs/mydata.bad \
rows=200000
Dan mydata.ctl akan terlihat seperti ini:
LOAD DATA
INFILE '/apps/load_files/mytable.dat'
INTO TABLE my_schema.my_able
FIELDS TERMINATED BY "|"
(ORDER_ID,
ORDER_DATE,
PART_NUMBER,
QUANTITY)
Atau... jika Anda hanya menyalin seluruh konten dari satu tabel ke tabel lain, di seluruh database, Anda dapat melakukan ini jika DBA Anda menyiapkan DBlink (proses 30 detik), dengan asumsi DB Anda diatur dengan ruang redo untuk selesaikan ini.
truncate table my_schema.my_table;
insert into my_schema.my_table
select * from [email protected]_remote_db;
Penggunaan /* +append */
petunjuk masih dapat menggunakan penyisipan jalur langsung.