SQLLoader là một tiện ích mạnh mẽ được cung cấp bởi Oracle để tải dữ liệu từ các file bên ngoài vào các bảng trong cơ sở dữ liệu Oracle. SQLLoader rất hữu ích khi cần nhập khối lượng lớn dữ liệu từ các file như CSV, Excel, hoặc các file văn bản khác.
Các bước cơ bản để sử dụng SQL*Loader
- Tạo file điều khiển (control file)
- Tạo file dữ liệu (data file)
- Thực thi SQL*Loader
1. Tạo file điều khiển (control file)
File điều khiển chỉ định cách dữ liệu trong file dữ liệu sẽ được nạp vào bảng. Nó bao gồm các thông tin như tên bảng, định dạng file dữ liệu và cách ánh xạ các cột dữ liệu vào bảng.
Ví dụ về file điều khiển (control file):
— example.ctl
LOAD DATA
INFILE ‘data.csv’
INTO TABLE my_table
FIELDS TERMINATED BY ‘,’ OPTIONALLY ENCLOSED BY ‘”‘
(
column1,
column2,
column3
)
2. Tạo file dữ liệu (data file)
File dữ liệu chứa các bản ghi sẽ được nạp vào bảng. Mỗi bản ghi trong file dữ liệu thường là một dòng văn bản, với các giá trị được phân tách bởi dấu phẩy hoặc dấu khác.
Ví dụ về file dữ liệu (data file):
— data.csv
1,John,Doe
2,Jane,Smith
3,Bob,Johnson
3. Thực thi SQL*Loader
Thực thi SQL*Loader từ dòng lệnh bằng cách sử dụng lệnh sqlldr.
sqlldr username/password@database control=example.ctl log=example.log bad=example.bad
- username/password@database: Thông tin kết nối đến cơ sở dữ liệu Oracle.
- control=example.ctl: Tên của file điều khiển.
- log=example.log: Tên của file log sẽ ghi lại thông tin về quá trình nạp dữ liệu.
- bad=example.bad: Tên của file chứa các bản ghi không thể nạp được do lỗi.
VÍ DỤ CHI TIẾT
Giả sử bạn có bảng employees với cấu trúc sau:
CREATE TABLE employees ( employee_id NUMBER, first_name VARCHAR2(50), last_name VARCHAR2(50) );
File điều khiển (control file):
-- employees.ctl LOAD DATA INFILE 'employees.csv' INTO TABLE employees FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' ( employee_id, first_name, last_name )
File dữ liệu (data file):
-- employees.csv 1,John,Doe 2,Jane,Smith 3,Bob,Johnson
Thực thi SQL*Loader:
sqlldr duonguser/oracle control=employees.ctl log=employees.log bad=employees.bad
Xử lý lỗi và log file
- File log (employees.log): Chứa thông tin chi tiết về quá trình nạp dữ liệu, bao gồm số lượng bản ghi đã nạp thành công và số lượng bản ghi gặp lỗi.
- File bad (employees.bad): Chứa các bản ghi không thể nạp vào bảng do gặp lỗi. File này giúp bạn xác định và khắc phục các vấn đề trong dữ liệu.
Các tùy chọn nâng cao
SQL*Loader cung cấp nhiều tùy chọn và tham số nâng cao để xử lý các yêu cầu phức tạp hơn, bao gồm:
- Direct Path Load: Tăng tốc quá trình nạp dữ liệu bằng cách ghi trực tiếp vào các file dữ liệu của Oracle, bỏ qua bộ đệm của Oracle.
OPTIONS (DIRECT=TRUE)
- Multiple Data Files: Nạp dữ liệu từ nhiều file.
INFILE 'file1.csv' INFILE 'file2.csv'
- SQL Expressions: Ánh xạ dữ liệu từ file dữ liệu vào các cột của bảng bằng cách sử dụng các biểu thức SQL.
( employee_id "EMP_SEQ.NEXTVAL", first_name CHAR, last_name CHAR )