Ringkasan : dalam tutorial ini, Anda akan mempelajari cara menggunakan alat Oracle SQL*Loader untuk memuat dari file datar ke dalam tabel di database.
Pengantar alat SQL*Loader
SQL*Loader memungkinkan Anda memuat data dari file eksternal ke dalam tabel di database. Itu dapat mengurai banyak format file yang dibatasi seperti CSV, tab-delimited, dan pipe-delimited.
SQL*Loader menyediakan metode berikut untuk memuat data:
- Pemuatan jalur konvensional – membuat
INSERT
pernyataan dari konten file data input berdasarkan spesifikasi yang telah ditentukan sebelumnya dan menjalankan penyisipan. - Beban jalur langsung – membuat blok data dalam format blok database Oracle dari file data dan langsung menulis blok data ke database. Cara ini jauh lebih cepat daripada jalur konvensional tetapi tunduk pada beberapa batasan.
- Beban tabel eksternal – buat tabel eksternal untuk data yang disimpan dalam file data dan jalankan
INSERT
pernyataan untuk memasukkan data dari file data ke tabel target. Beban tabel eksternal mendukung pemuatan paralel jika file data cukup besar.
Untuk menjalankan alat SQL*Load, Anda memerlukan setidaknya tiga file:
- File data input menyimpan data yang dibatasi atau mentah
- File parameter menyimpan lokasi file input/output
- File kontrol berisi spesifikasi tentang bagaimana data dimuat.
Setelah itu, Anda menjalankan perintah sqlldr
dari baris perintah di Windows atau Terminal di GNU/Linux:
Bahasa kode: SQL (Structured Query Language) ( sql )>sqlldr parfile=parameter_file.par
Gambar berikut mengilustrasikan proses SQL*Loader:

Mari kita ambil contoh penggunaan alat SQL*Load.
Contoh SQL*Loader
Kami akan memuat data email format file CSV ke dalam emails
tabel di database.
Siapkan file input
Berikut isi dari email.dat
file tersebut:
1,john.doe@example.com
2,jane.doe@example.com
3,peter.doe@example.com
Bahasa kode: CSS ( css )
Isi dari file kontrol ( email.ctl
) adalah sebagai berikut:
load data into table emails
insert
fields terminated by ","
(
email_id,
email
)
Bahasa kode: JavaScript ( javascript )
Dalam file kontrol:
- Perintah
load data into table emails insert
SQL*Loader untuk memuat data ke dalam tabel email menggunakan pernyataan INSERT. - Menentukan
fields terminated by "," (email_id,email)
bahwa setiap baris dalam file memiliki dua kolomemail_id
danemail
dipisahkan oleh koma (,).
Berikut adalah isi dari file parameter ( email.par
):
userid=ot@pdborc/Abcd1234
control=email.ctl
log=email.log
bad=email.bad
data=email.dat
direct=true
Bahasa kode: JavaScript ( javascript )
Dalam file parameter ini, kami menentukan pengguna ( userid
) yang akan terhubung ke database Oracle, file kontrol ( email.ctl
), file log ( email.log
), dan file data ( email.dat
).
File email.bad
menyimpan data yang tidak valid. Dan baris terakhir direct=true
menginstruksikan SQL*Loader untuk menggunakan metode pemuatan jalur langsung.
Perhatikan bahwa tidak ada spasi antara parameter dan nilai, misalnya:
Bahasa kode: SQL (Structured Query Language) ( sql )control=email.ctrl
Setelah memiliki tiga file, Anda dapat meletakkannya di direktori misalnya C:\loader.
Berikut ini tautan untuk mengunduh ketiga file dalam format file zip:
Unduh file data, kontrol, dan parameter
Muat data dari file datar ke dalam tabel
Pertama, buat tabel baru untuk menyimpan data email dari input datafile:
CREATE TABLE emails(
email_id NUMBER PRIMARY KEY,
email VARCHAR2(150) NOT NULL
);
Bahasa kode: SQL (Structured Query Language) ( sql )
Kedua, luncurkan program SQL*Loader dari direktori tempat Anda menyimpan file menggunakan sqlldr
perintah:
Bahasa kode: SQL (Structured Query Language) ( sql )C:\loader> sqlldr parfile=dept_loader.par
Berikut adalah outputnya:
Path used: Direct
Load completed - logical record count 3.
Table EMAILS:
3 Rows successfully loaded.
Check the log file:
email.log
for more information about the load.
Bahasa kode: CSS ( css )
Ketiga, masuk ke Oracle dan verifikasi isi emails
tabel:
SELECT * FROM emails;
Bahasa kode: SQL (Structured Query Language) ( sql )
Berikut adalah hasil yang ditetapkan:

Terakhir, tinjau file log:
SQL*Loader: Release 12.1.0.2.0 - Production on Tue Jul 23 08:04:46 2019
Copyright (c) 1982, 2014, Oracle and/or its affiliates. All rights reserved.
Control File: email.ctl
Data File: email.dat
Bad File: email.bad
Discard File: none specified
(Allow all discards)
Number to load: ALL
Number to skip: 0
Errors allowed: 50
Continuation: none specified
Path used: Direct
Table EMAILS, loaded from every logical record.
Insert option in effect for this table: INSERT
Column Name Position Len Term Encl Datatype
------------------------------ ---------- ----- ---- ---- ---------------------
EMAIL_ID FIRST * , CHARACTER
EMAIL NEXT * , CHARACTER
The following index(es) on table EMAILS were processed:
index OT.SYS_C0010446 loaded successfully with 3 keys
Table EMAILS:
3 Rows successfully loaded.
0 Rows not loaded due to data errors.
0 Rows not loaded because all WHEN clauses were failed.
0 Rows not loaded because all fields were null.
Bind array size not used in direct path.
Column array rows : 5000
Stream buffer bytes: 256000
Read buffer bytes: 1048576
Total logical records skipped: 0
Total logical records read: 3
Total logical records rejected: 0
Total logical records discarded: 0
Total stream buffers loaded by SQL*Loader main thread: 2
Total stream buffers loaded by SQL*Loader load thread: 0
Run began on Tue Jul 23 08:04:46 2019
Run ended on Tue Jul 23 08:04:48 2019
Elapsed time was: 00:00:01.47
CPU time was: 00:00:00.07
Bahasa kode: JavaScript ( javascript )
Dalam tutorial ini, Anda telah mempelajari cara menggunakan SQL*Loader untuk memuat data dari flat-file ke dalam tabel di database.
0 komentar:
Posting Komentar