Sử dụng SQL*Loader load dữ liệu bên ngoài vào Oracle Database

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

  1. Tạo file điều khiển (control file)
  2. Tạo file dữ liệu (data file)
  3. 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

sqlloader

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
)

 

Datalinks.vn

Hello các bạn, tôi là Dương Nguyễn (DuoDBA - https://www.youtube.com/@DuoDBA) tác giả của blog này. Mong muốn được chia sẻ kiến thức và kinh nghiệm về cơ sở dữ liệu với những người đam mê và quan tâm đến lĩnh vực này. Tôi có tổ chức các khoá Coaching về #OracleDatabase và luyện thi #OCP thường xuyên, các bạn muốn có người đồng hành thì alo tôi nhé. Call/Zalo: 0765 871 888. Thanks you !.....
0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest

0 Góp ý
Phản hồi nội tuyến
Xem tất cả bình luận