×

Tải dữ liệu từ file với hàm LOAD_FILE() trong MySQL

Khi làm việc với cơ sở dữ liệu MySQL, bạn có thể bắt gặp yêu cầu tải dữ liệu từ file vào database. Một trong những cách hiệu quả để thực hiện điều này là sử dụng hàm LOAD_FILE(). Hàm này cho phép bạn đọc trực tiếp dữ liệu từ file và tải dữ liệu đó vào một bảng trong cơ sở dữ liệu.

Cách sử dụng hàm

Hàm này có cú pháp như sau:

LOAD_FILE('file_path')

Trong đó, file_path là đường dẫn đầy đủ tới file mà bạn muốn đọc. Lưu ý rằng đường dẫn này phải là đường dẫn tuyệt đối và file phải có sẵn trên hệ thống máy chủ MySQL.

Ví dụ đơn giản, giả sử bạn có một file tên là "data.txt" nằm trong thư mục "/var/lib/mysql-files/" và bạn muốn tải nội dung của file này vào cơ sở dữ liệu. Câu lệnh SQL sẽ như sau:

SELECT LOAD_FILE('/var/lib/mysql-files/data.txt');

Điều kiện để sử dụng hàm

Mặc dù cú pháp của hàm rất đơn giản, nhưng có một số điều kiện mà bạn phải đáp ứng:

  1. Quyền truy cập: Người dùng MySQL phải có quyền FILE trên server.
  2. Đường dẫn tuyệt đối: Đường dẫn tới file phải là đường dẫn đầy đủ, không được dùng đường dẫn tương đối.
  3. Định dạng file: File phải là định dạng có thể đọc được bởi MySQL, ví dụ như văn bản thuần. File nhị phân có thể gây ra lỗi không mong muốn.
  4. Quyền của file và thư mục: File và thư mục chứa file phải có quyền truy cập tương ứng. Thường thì MySQL sẽ cần quyền đọc file.

Ví dụ thực tế

Giả sử bạn có một file CSV chứa dữ liệu khách hàng và bạn muốn tải dữ liệu này vào một bảng trong MySQL. Đầu tiên, bạn cần đảm bảo file CSV có định dạng hợp lệ. Ví dụ:

id, name, email
1, "John Doe", "john@example.com"
2, "Jane Smith", "jane@example.com"

Bây giờ, bạn có thể thực hiện các bước sau:

  1. Tạo bảng trong MySQL:

    CREATE TABLE customers (
        id INT,
        name VARCHAR(100),
        email VARCHAR(100)
    );
    
  2. Tải dữ liệu từ file vào bảng:

    LOAD DATA INFILE '/var/lib/mysql-files/customers.csv' 
    INTO TABLE customers 
    FIELDS TERMINATED BY ',' 
    ENCLOSED BY '"' 
    LINES TERMINATED BY '\n' 
    IGNORE 1 LINES;
    

    Lưu ý: Ở đây thay vì dùng hàm, chúng ta sử dụng câu lệnh LOAD DATA INFILE để tải dữ liệu trực tiếp từ CSV. Đây là cách phổ biến và hiệu quả hơn khi làm việc với dữ liệu dạng bảng như CSV.

Kết luận

Hàm có thể rất hữu ích khi bạn cần tải dữ liệu trực tiếp từ file vào database mà không qua các bước trung gian phức tạp. Tuy nhiên, bạn cần đảm bảo quyền truy cập và định dạng file hợp lý để tránh các lỗi phát sinh. Với những loại dữ liệu phức tạp hơn như CSV hoặc Excel, bạn có thể kết hợp với các câu lệnh khác như LOAD DATA INFILE để đạt hiệu quả tối ưu.

Comments