×

Nhập dữ liệu từ file với lệnh INFILE trong MySQL

Quản lý dữ liệu là một phần quan trọng trong mọi hệ thống cơ sở dữ liệu. Trong MySQL, để nhập dữ liệu từ file, một trong những lệnh được sử dụng phổ biến là LOAD DATA INFILE. Lệnh này cho phép chúng ta đưa dữ liệu từ các file bên ngoài vào trong bảng của cơ sở dữ liệu MySQL một cách nhanh chóng và hiệu quả. Bài viết này sẽ hướng dẫn chi tiết cách sử dụng lệnh này, cũng như những điều cần lưu ý để đảm bảo quá trình nhập dữ liệu diễn ra suôn sẻ.

Chuẩn Bị Dữ Liệu

Trước khi tiến hành nhập dữ liệu, bước đầu tiên là phải chuẩn bị một file dữ liệu thích hợp. Thông thường, file này sẽ ở định dạng văn bản với các trường dữ liệu được phân tách bằng dấu phẩy hoặc tab. Ví dụ, một file CSV (data.csv) có thể có nội dung như sau:

1,John Doe,johndoe@example.com
2,Jane Smith,janesmith@example.com
3,Bob Johnson,bobjohnson@example.com

File này chứa ba bản ghi với các trường được phân cách bằng dấu phẩy.

Chuẩn Bị Cơ Sở Dữ Liệu MySQL

Trước khi dùng lệnh nhập dữ liệu, cần đảm bảo rằng bảng trong cơ sở dữ liệu đã được tạo và tương thích với cấu trúc của file dữ liệu. Ví dụ, bảng users trong cơ sở dữ liệu có thể được tạo bằng lệnh sau:

CREATE TABLE users (
    id INT,
    name VARCHAR(100),
    email VARCHAR(100)
);

Sử Dụng Lệnh LOAD DATA INFILE

Sau khi chuẩn bị file dữ liệu và bảng trong cơ sở dữ liệu, chúng ta có thể sử dụng lệnh LOAD DATA INFILE để nhập dữ liệu vào bảng. Cú pháp cơ bản của lệnh này như sau:

LOAD DATA INFILE 'path_to_your_file.csv'
INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(id, name, email);

Giải thích các thành phần của lệnh:

  • 'path_to_your_file.csv': Đường dẫn tới file dữ liệu cần nhập. Đường dẫn này phải là đường dẫn tuyệt đối nếu file nằm bên ngoài thư mục dữ liệu của MySQL.
  • INTO TABLE users: Tên bảng mà dữ liệu sẽ được nhập vào.
  • FIELDS TERMINATED BY ',': Ký tự ngăn cách giữa các trường dữ liệu; trong trường hợp này là dấu phẩy.
  • LINES TERMINATED BY '\n': Ký tự ngắt dòng, thường là ký tự xuống dòng hoặc newline.
  • (id, name, email): Danh sách các cột trong bảng tương ứng với các trường trong file dữ liệu.

Các Tùy Chọn Khác

MySQL cung cấp nhiều tùy chọn để tinh chỉnh quá trình nhập dữ liệu:

  • IGNORE number LINES: Bỏ qua một số dòng đầu trong file, thường dùng để bỏ qua dòng tiêu đề.
  • ENCLOSED BY 'char': Chỉ định ký tự bao quanh dữ liệu, thường là dấu nháy kép hoặc nháy đơn.
  • ESCAPED BY 'char': Chỉ định ký tự escape để xử lý các ký tự đặc biệt trong dữ liệu.

Ví dụ sử dụng các tùy chọn này:

LOAD DATA INFILE 'path_to_your_file.csv'
INTO TABLE users
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\'
LINES TERMINATED BY '\n'
IGNORE 1 LINES
(id, name, email);

Những Điều Cần Lưu Ý

  1. Quyền Truy Cập: Lệnh LOAD DATA INFILE yêu cầu quyền truy cập file trên máy chủ MySQL. Nếu không có quyền này, có thể sử dụng LOCAL như sau: LOAD DATA LOCAL INFILE 'path_to_your_file.csv' INTO TABLE users ....

  2. Định Dạng File: Đảm bảo rằng định dạng file dữ liệu phù hợp với cấu trúc bảng. Những sai lệch nhỏ cũng có thể dẫn đến lỗi trong quá trình nhập dữ liệu.

  3. Dữ Liệu Đặc Biệt: Khi file dữ liệu chứa các ký tự đặc biệt hoặc dữ liệu phức tạp, cần sử dụng thêm các tùy chọn về ký tự bao quanh và ký tự escape.

  4. Xử Lý Lỗi: Khi gặp lỗi, MySQL sẽ ghi lại trong nhật ký lỗi, giúp dễ dàng kiểm tra và khắc phục.

Trên đây là các bước cơ bản và những lưu ý khi sử dụng lệnh LOAD DATA INFILE trong MySQL. Việc nắm vững và áp dụng lệnh này sẽ giúp quá trình quản lý và nhập liệu trở nên hiệu quả hơn, tiết kiệm công sức và thời gian.

Comments