Giáo viên HD: Nguyễn Thị Kim Phụng
Nội dung
Giới thiệu về Oracle SQL Loader
File đầu vào :Control file, data file
File đầu ra: Database, Log file,
bad file, discard file
Demo
Oracle SQL Loader là gì ?
Là tiện ích được sử dụng để tải dữ liệu từ các nguồn dữ liệu khác vào
Oracle.
VD: *.dat, *.txt, *.xls, *.mdb, …
SQL*Loader đọc data file và mô tả dữ liệu bên trong control file. Sử
dụng thông tin này và những tham số được kèm theo để nạp dữ liệu
vào database
Control file
Control file chứa những thông tin miêu tả cách mà dữ liệu được nạp.
Nó bao gồm table name, column datatypes,
1 dạng cấu trúc của Control file:
LOAD DATA
INFILE '<file_name>'
APPEND
CONTINUEIF THIS (start_position:end_position) = value
INTO TABLE table_name
(
<column_name> POSITION(<integer>:<integer>) <data_type>,
<column_name> POSITION(<integer>:<integer>) <data_type>,
<column_name> POSITION(<integer>:<integer>) <data_type>)
Các kiểu Load dữ liệu
APPEND
INSERT
REPLACE
TRUNCATE
Các kiểu dữ liệu trong SQL Loader
CHAR
DECIMAL EXTERNAL
INTEGER EXTERNAL
WHEN <condition> VD WHEN name != ‘ Mays '
CONTINUEIF THIS (start_position:end_position) = value
VD CONTINUEIF THIS (1:2) = '%%'
INFILE :Xác định tên file chứa dữ liệu nạp vào database,
dấu * cho biết dữ liệu sẽ được lấy ngay trong control file,
phía sau của từ khoá BEGINDATA
BEGINDATA: Từ khoá xác định điểm bắt đầu chứa dữ liệu,
sau từ khoá này là dữ liệu cần nạp vào database.
BADFILE: Xác định tên của các file lưu các dữ liệu không
thể nạp được vào database do phát sinh lỗi trong quá trình
nạp dữ liệu.
DISCARDFILE : Xác định tên của file lưu các dòng dữ liệu
bị bỏ qua không nạp vào database do không đúng với tiêu
chuẩn nạp dữ liệu
Các từ khóa thường gặp
INSERT: Thêm mới 1 dòng dữ liệu trong database
APPEND : Chèn thêm một dòng dữ liệu vào cuối cùng của bảng
TRAILING NULLCOLS : Điền giá trị null vào cột.
POSITION: Từ khoá dùng để xác định vị trí của dữ liệu cần nạp
CONSTANT : Đặt giá trị hằng số cho cột dữ liệu
RECNUM : Đếm số lượng dòng dữ liệu đã được nạp
SYSDATE : Trả về giá trị ngày giờ hiện thời
TERMINATED : Từ khoá xác định phân cách kết thúc
ENCLOSED :Từ khoá dùng để xác định đường bao dữ liệu
VD
LOAD DATA
INFILE 'E:\seminar\demo04.dat'
DISCARDFILE 'E:\seminar\demo4.dsc'
REPLACE
CONTINUEIF THIS (1) = '*'
INTO TABLE emp (
empno POSITION(1:4) INTEGER EXTERNAL,
ename POSITION(6:15) CHAR,
hiredate POSITION(52:60) INTEGER EXTERNAL)
Phân loại control file
Có 2 loại chính:
Nạp trực tiếp:
VD:
LOAD DATA
INFILE *
INTO TABLE dept
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
(deptno, dname, loc)
BEGINDATA
12,RESEARCH,"SARATOGA"
10,"ACCOUNTING",CLEVELAND
11,"ART",SALEM
13,FINANCE,"BOSTON"
21,"SALES",PHILA.
22,"SALES",ROCHESTER
42,"INT'L","SAN FRAN"
![]()
Data file
File dữ liệu chứa các bản ghi được xử lý theo một định dạng đã định
nghĩa trong control file
![]()
Log file
Luôn được tạo ra sau khi load dữ liệu.
Bao gồm các thông tin sau:
Phần header: thời gian chạy, phiên bản của phần mềm.
Các thông tin toàn cục: tên của input file và output file, các tham số
dòng lệnh.
Các thông tin bảng: tên bảng, điều kiện load và phương pháp load.
Thông tin về các trường và cột.
Thông tin về tệp dữ liệu: chỉ ra các bản ghi bị từ chối và loại bỏ và lí do
bị từ chối hay loại bỏ.
Thông tin load các bảng: số các hàng đã được load, số các hàng bị từ
chối vì lỗi dữ liệu, số các hàng bị loại bỏ.
Thông tin tổng hợp: hiển thị dữ liệu sau: số lượng không gian được thiết
lập cho mảng, thông tin thống kê cho tất cả các data file.
Thời gian bắt đầu và thời gian kết thúc quá trình load.
![]()
Bad file
Chứa các bản ghi bị từ chối trong quá trình xử lý vì một trong các lí do
sau:
Các bản ghi đầu vào có lỗi. Ví dụ như định dạng sai, độ
rộng của trường quá lớn.
Không thể chèn thêm các bản ghi vào table. Chẳng hạn như
dữ liệu nạp vào không hợp lệ, các constraints bị vi phạm.
![]()
Discard file
Chứa dữ liệu như định dạng của tệp dữ liệu đưa vào, nó chứa các bản ghi
không thoả mãn điều kiện load.
![]()
Câu lệnh thực thi:
sqlldr userid = username/pass control = đường dẫn chứa file control log =
đường dẫn chứa file log
Demo