Berhubung ada waktu sedikit (sok sibuk) kita teruskan bermain yuk…
kali ini kita main dengan sqlloader.
Beberapa waktu lalu, di kerjaan membutuhkan suatu cara untuk memasukkan data dari suatu file menuju database (Oracle) secara batch (scheduller)… Sebenarnya sih ga usah untuk batch, seandainya kita punya data cukup banyak (dalam bentuk csv, atau file lain dengan pemisah tanda tertentu, baik itu “,” atau “|”) plus kita males masukin datanya satu per satu ke database, kita juga bisa pakai sqlloader ini… praktissss…
Tapi, patut dicatat, sqlloader sekedar insert/append, dia tidak bisa melakukan pekerjaan lain (misalnya update).
ok deh… kita mulai aja membahas cara kerjanya.
1. kita siapkan file data yang ingin dimasukkan (kalau saya pake csv) dengan delimiter/pemisah yang kita punya (saya pake “,” )
2. kita siapkan controller.ctl dengan contoh isi seperti ini
Load DATA
INFILE 'C:\tempatfile\namafile.csv'
BADFILE 'err.log'
DISCARDFILE 'discard.log'
APPEND
INTO TABLE namatabel
FIELDS TERMINATED BY ","
TRAILING NULLCOLS
(
ID Integer EXTERNAL,
KOLOM1 CHAR ,
KOLOM2 CHAR,
KOLOM3 CHAR
KOLOMTANGGAL Date'yyyy-mm-dd',
)
sqlloader setahuku (cmiiw) hanya mengenali tipe INTEGER EXTERNAL, CHAR, dan Date, jadi tipe-tipe data lain menyesuaikan.
Dari contoh di atas, berarti kita memiliki data yang terdiri dari lima kolom, yaitu kolom ID, KOLOM1, KOLOM2, KOLOM3 dan KOLOMTANGGAL
untuk menjalankan file tersebut, kita jalankan dulu commandpromt, masuk ke path file ctl kita
lalu jalankan perintah berikut :
sqlldr userid=username/password@database control=C:\tempatfile\controller.crl log=C:\tempatfile\controller.log