1. Giới thiệu về việc nhập CSV vào MySQL
Nhập tệp CSV vào MySQL là một cách mạnh mẽ để tối ưu hóa việc quản lý dữ liệu và loại bỏ công việc nhập thủ công. Ví dụ, khi bạn muốn đưa dữ liệu từ nhiều nguồn khác nhau vào cơ sở dữ liệu chỉ trong một bước, hoặc cần tự động xử lý dữ liệu từ hệ thống bên ngoài, thì nhập CSV là giải pháp rất hữu ích.
Các trường hợp sử dụng phổ biến của nhập CSV
- Xử lý dữ liệu lớn: Thay vì nhập thủ công hàng nghìn bản ghi, bạn có thể dùng nhập CSV để xử lý nhanh chóng chỉ trong vài phút.
- Di chuyển dữ liệu: Rất tiện lợi khi bạn muốn đưa dữ liệu đã xuất từ hệ thống khác vào MySQL.
- Cập nhật dữ liệu định kỳ: Trong các hệ thống cần cập nhật thường xuyên, việc tự động hóa bằng tệp CSV sẽ giúp tiết kiệm thời gian.
2. Điều kiện tiên quyết
Trước khi nhập tệp CSV vào MySQL, bạn cần thực hiện một số cài đặt và chuẩn bị để đảm bảo quá trình diễn ra suôn sẻ.
2.1 Môi trường cần thiết
- Cài đặt máy chủ MySQL
Yêu cầu MySQL đã được cài đặt chính xác. Hãy kiểm tra để đảm bảo MySQL hoạt động trên hệ điều hành bạn đang dùng như Windows, macOS hoặc Linux. - Quyền truy cập cần thiết
Để nhập CSV, người dùng MySQL cần được cấp quyền phù hợp, đặc biệt là quyềnLOAD DATA INFILE
. Nếu không có quyền này, quá trình nhập sẽ bị từ chối.
2.2 Định dạng tệp CSV
- Ký tự phân tách
Thông thường CSV được phân tách bằng dấu phẩy, nhưng đôi khi có thể dùng tab hoặc dấu chấm phẩy. Hãy kiểm tra ký tự phân tách trước khi nhập. - Kiểm tra mã hóa
Nếu tệp CSV được lưu bằng mã hóa khác (UTF-8, Shift-JIS, v.v.), có thể gây lỗi hiển thị khi nhập. Hãy đảm bảo tệp được mã hóa đúng, và chuyển đổi sang UTF-8 nếu cần.

3. Nhập CSV bằng lệnh LOAD DATA INFILE
Cách phổ biến nhất để nhập tệp CSV vào MySQL là sử dụng lệnh LOAD DATA INFILE
. Lệnh này cho phép đưa lượng lớn dữ liệu vào cơ sở dữ liệu một cách nhanh chóng.
3.1 Cú pháp cơ bản
Dưới đây là cú pháp cơ bản khi nhập CSV vào MySQL.
LOAD DATA INFILE '/path/to/file.csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n';
FIELDS TERMINATED BY
: Xác định ký tự phân tách các trường, thường là dấu phẩy.LINES TERMINATED BY
: Xác định ký tự kết thúc dòng, thường làn
(xuống dòng).
3.2 Ví dụ thực tế
Ví dụ sau nhập tệp user_data.csv
vào bảng users
.
LOAD DATA INFILE '/path/to/user_data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES;
IGNORE 1 LINES
: Bỏ qua dòng đầu tiên (tiêu đề cột) trong tệp CSV. Tùy chọn này rất hữu ích khi dòng đầu chứa tên cột.
3.3 Lưu ý: đường dẫn tệp và quyền
Khi chỉ định đường dẫn tệp, hãy đảm bảo máy chủ MySQL có quyền truy cập. Nếu không, hãy dùng LOAD DATA LOCAL INFILE
để nhập dữ liệu từ phía client.
4. Giải quyết sự cố thường gặp
Dưới đây là các vấn đề phổ biến khi nhập CSV và cách xử lý.
4.1 Lỗi đường dẫn tệp
Nếu đường dẫn không đúng, bạn có thể thấy lỗi The MySQL server is not permitted to read from the file
. Khi đó, hãy kiểm tra lại đường dẫn hoặc dùng tùy chọn LOAD DATA LOCAL INFILE
để nhập từ máy cục bộ.
LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n';
4.2 Lỗi mã hóa ký tự
Nếu tệp CSV có mã hóa khác, dữ liệu có thể bị lỗi hiển thị khi nhập. Để tránh, hãy xác nhận mã hóa và thiết lập đúng trên MySQL.
SET NAMES 'utf8mb4';

5. Ví dụ thực hành: Quy trình nhập CSV
Dưới đây là hướng dẫn chi tiết để nhập một tệp CSV vào MySQL.
5.1 Chuẩn bị tệp CSV
Tạo tệp CSV (data.csv
) với nội dung như sau:
id,name,age
1,Yamada Taro,28
2,Sato Hanako,34
3,Tanaka Ichiro,45
5.2 Thực thi lệnh
Để nhập tệp vào bảng users
, chạy lệnh sau:
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES;
Lệnh này sẽ nhập dữ liệu từ dòng thứ 2 của tệp CSV vào bảng users
.
6. Nâng cao: Xử lý lỗi và dữ liệu trùng lặp
Dưới đây là cách xử lý khi gặp lỗi hoặc dữ liệu trùng trong quá trình nhập.
6.1 Xử lý dữ liệu trùng
Nếu dữ liệu có cùng khóa đã tồn tại, bạn có thể dùng tùy chọn REPLACE
để thay thế bản ghi cũ bằng dữ liệu mới.
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES
REPLACE;
6.2 Xử lý lỗi nhập
Nếu có lỗi khi nhập nhưng muốn tiếp tục xử lý các dòng khác, hãy dùng tùy chọn IGNORE
để bỏ qua dòng bị lỗi.
LOAD DATA INFILE '/path/to/data.csv' INTO TABLE users
FIELDS TERMINATED BY ','
LINES TERMINATED BY 'n'
IGNORE 1 LINES
IGNORE;

7. Kết luận
Nhập CSV vào MySQL là một công cụ mạnh mẽ giúp xử lý dữ liệu lớn và di chuyển dữ liệu giữa các hệ thống. Hiểu rõ các bước cơ bản, kết hợp xử lý lỗi và tránh dữ liệu trùng lặp sẽ giúp bạn quản lý dữ liệu ổn định hơn.
Trong các bài viết tiếp theo, chúng tôi sẽ hướng dẫn chi tiết cách xuất dữ liệu từ MySQL để nâng cao hơn nữa kỹ năng quản lý dữ liệu của bạn.