Menggunakan SQL*Loader
SQL Loader adalah tool Oracle untuk me-load data dari flat (text) file ke dalam tabel di database Oracle. Program (executable) SQL Loader adalah sqlldr, lokasi ada di $ORACLE_HOME/bin.
SQL Loader sering digunakan untuk mengatasi kendala jaringan. Misalkan perusahaan punya kantor cabang yang tidak tersambung online dengan pusat; data transaksi biasanya dikirim ke pusat dalam bentuk text file; di pusat, data tersebut kemudian di-load ke database pakai SQL Loader.
SQL Loader juga sering digunakan untuk me-load data dari system yang berbeda. Misalkan transaksi di-handle oleh database non Oracle, sementara datawarehouse menggunakan Oracle. Nah, data transaksi dari non Oracle ini kemudian di-export ke dalam text file, dan kemudian di-import ke Oracle pakai SQL*Loader.
Misalkan saya punya file penjualan.dat yang berisi:
3286;23-DEC-08;SEMARANG
3287;24-DEC-08;SURABAYA
3288;25-DEC-08;MAKASAR
3289;26-DEC-08;MEDAN
3290;26-DEC-08;MAGELANG TENGAH
File penjualan.dat tersebut akan saya load ke tabel penjualan:
CREATE TABLE penjualan
( no_invoice NUMBER,
tgl_jual DATE,
area varchar2(10));
Langkap pertama, buat control file yang berisi parameter-parameter untuk SQL Loader. Misalkan saya beri nama penjualan.ctl.
load data
APPEND
into table PENJUALAN
fields terminated by ";"
TRAILING NULLCOLS
(no_invoice,tgl_jual,area)
Langkah selanjutnya, load data di penjualan.dat ke tabel PENJUALAN. Gunakan perintah berikut:
sqlldr USERID=test/test CONTROL=penjualan.ctl, DATA=penjualan.dat, LOG=penjualan.log, BAD=penjualan.bad
Parameter untuk sqlldr adalah:
USERID: user dan password ke database Oracle
CONTROL: control file yang akan digunakan
DATA: file (data) yang akan di-load
LOG: file untuk menyimpan log dari proses loader
BAD: file untuk menyimpan data yang tidak diprose
Setelah menjalankan sqlldr di atas, lihat lognya di file penjualan.log. Oo… ternyata ada error:
Record 5: Rejected - Error on table PENJUALAN, column AREA.
ORA-12899: value too large for column "TEST"."PENJUALAN"."AREA" (actual: 15, maximum: 10)
Record (baris) kelima tidak diproses karena lebar kolom AREA hanya 10 karakter, sementara nilai yang dimasukkan panjangnya 15 karakter (MAGELANG TENGAH). Record yang tidak diposes ini ditaruh di file penjualan.bad. Sekarang coba query ke tabel PENJUALAN, data yang masuk hanya 4 record.
SQL> select * from penjualan;
NO_INVOICE TGL_JUAL AREA
---------- --------- ----------
3286 23-DEC-08 SEMARANG
3287 24-DEC-08 SURABAYA
3288 25-DEC-08 MAKASAR
3289 26-DEC-08 MEDAN
Referensi
Oracle® Database Utilities 10g Release 2 (10.2) - SQL*Loader
Jumat, 15 Agustus 2008
Langganan:
Posting Komentar (Atom)
Tidak ada komentar:
Posting Komentar