MySQL - Xuất Bảng Thành Tệp CSV

Xin chào các nhà thuật toán cơ sở dữ liệu tương lai! Hôm nay, chúng ta sẽ bắt đầu một hành trình thú vị vào thế giới của MySQL và học cách xuất dữ liệu quý báu của chúng ta thành các tệp CSV. Đừng lo lắng nếu bạn mới bắt đầu; tôi sẽ hướng dẫn bạn từng bước như thể chúng ta đang ngồi bên nhau trong lớp học của tôi. Hãy cùng nhau nhảy vào!

MySQL - Export Table into CSV File

什么是CSV文件?

Trước khi chúng ta bắt đầu xuất dữ liệu, hãy hiểu CSV là gì. CSV viết tắt của Comma-Separated Values. Đây là một định dạng tệp đơn giản được sử dụng để lưu trữ dữ liệu bảng, chẳng hạn như bảng tính hoặc cơ sở dữ liệu. Mỗi dòng trong tệp đại diện cho một hàng của bảng, và các giá trị trong mỗi hàng được phân tách bằng dấu phẩy.

Ví dụ, một tệp CSV có thể trông như thế này:

Name,Age,City
John,25,New York
Sarah,30,London
Mike,28,Tokyo

Định dạng này được sử dụng rộng rãi vì nó đơn giản và dễ dàng được nhập vào nhiều ứng dụng khác nhau, bao gồm cả phần mềm bảng tính và các cơ sở dữ liệu khác.

Xuất Bảng MySQL Thành Tệp CSV

Bây giờ, hãy chuyển sang phần chính của bài học: xuất bảng MySQL thành tệp CSV. Có nhiều cách để làm điều này, và chúng ta sẽ khám phá từng cách chi tiết.

Phương pháp 1: Sử dụng Lệnh SELECT ... INTO OUTFILE

Đây là phương pháp đơn giản nhất để xuất dữ liệu từ MySQL sang tệp CSV. Dưới đây là cú pháp cơ bản:

SELECT * FROM table_name
INTO OUTFILE '/path/to/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Hãy phân tích này:

  • SELECT * FROM table_name: Chọn tất cả các cột từ bảng của bạn.
  • INTO OUTFILE '/path/to/file.csv': Chỉ định đường dẫn tệp đầu ra.
  • FIELDS TERMINATED BY ',': Chỉ định MySQL phân tách các trường bằng dấu phẩy.
  • ENCLOSED BY '"': Bọc các trường trong dấu ngoặc kép (thuận tiện nếu dữ liệu của bạn chứa dấu phẩy).
  • LINES TERMINATED BY '\n': Kết thúc mỗi hàng bằng ký tự mới dòng.

Phương pháp 2: Sử dụng Lệnh mysqldump

Nếu bạn thích làm việc từ dòng lệnh, mysqldump sẽ là người bạn đồng hành của bạn. Dưới đây là cách sử dụng nó:

mysqldump -u username -p --tab=/path/to/output/directory database_name table_name

Lệnh này sẽ tạo ra hai tệp trong thư mục được chỉ định:

  1. Một tệp .sql chứa cấu trúc bảng
  2. Một tệp .txt chứa dữ liệu ở định dạng phân tách bằng tab

Để có định dạng CSV, bạn có thể thêm một số tùy chọn:

mysqldump -u username -p --tab=/path/to/output/directory --fields-terminated-by=, --fields-enclosed-by='"' --lines-terminated-by=0x0d0a database_name table_name

Vị Trí Lưu Trữ của Tệp Xuất .csv

Khi xuất tệp, rất quan trọng là phải hiểu chúng được lưu ở đâu. Mặc định, MySQL lưu các tệp xuất ở thư mục dữ liệu của nó. Tuy nhiên, do lý do an ninh, bạn có thể không có quyền ghi vào thư mục này.

Để biết MySQL đang cố gắng lưu tệp ở đâu, bạn có thể chạy:

SHOW VARIABLES LIKE "secure_file_priv";

Lệnh này sẽ hiển thị thư mục mà MySQL được phép đọc/ghi tệp. Nếu nó trả về NULL, điều đó có nghĩa là không có hạn chế nào.

Xuất Dữ liệu MySQL Dưới Định Dạng CSV

Bây giờ, hãy xem xét một số tình huống cụ thể và cách xử lý chúng.

Xuất Dữ liệu Bảng Cùng với Tên Cột

Nếu bạn muốn bao gồm tên cột trong tệp CSV, bạn có thể sử dụng truy vấn UNION:

(SELECT 'id', 'name', 'age', 'city')
UNION
(SELECT * FROM users)
INTO OUTFILE '/path/to/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Truy vấn này sẽ thêm một hàng với tên cột, sau đó union nó với dữ liệu thực tế.

Xuất Dữ liệu Bảng Không Chỉ Định Tên Cột

Nếu bạn không cần tên cột, bạn có thể sử dụng:

SELECT * FROM users
INTO OUTFILE '/path/to/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Thay Thế Giá Trị NULL

Đôi khi, bạn có thể muốn thay thế các giá trị NULL bằng một thứ khác trong tệp CSV. Bạn có thể sử dụng hàm IFNULL() cho điều này:

SELECT
id,
IFNULL(name, 'Unknown') AS name,
IFNULL(age, 0) AS age,
IFNULL(city, 'N/A') AS city
FROM users
INTO OUTFILE '/path/to/file.csv'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n';

Lệnh này sẽ thay thế các giá trị NULL trong tên bằng 'Unknown', trong tuổi bằng 0, và trong thành phố bằng 'N/A'.

Sử Dụng Chương Trình Khách

Nếu bạn đang sử dụng chương trình khách MySQL như MySQL Workbench hoặc phpMyAdmin, bạn thường có các tính năng xuất nội dung tích hợp. Các GUI này có thể làm cho quá trình này dễ dàng hơn, đặc biệt là đối với người mới bắt đầu.

Ví dụ, trong MySQL Workbench:

  1. Nhấp phải vào bảng của bạn
  2. Chọn "Table Data Export Wizard"
  3. Theo các hướng dẫn để xuất dữ liệu của bạn dưới dạng CSV

Nhớ rằng, thực hành là chìa khóa! Đừng ngại thử nghiệm với các phương pháp này. Trước khi bạn biết, bạn sẽ xuất tệp CSV như một chuyên gia.

Dưới đây là bảng tóm tắt các phương pháp chúng ta đã thảo luận:

Phương pháp Ưu điểm Nhược điểm
SELECT ... INTO OUTFILE Nhanh, linh hoạt Yêu cầu quyền truy cập vào hệ thống tệp
mysqldump Dễ sử dụng từ dòng lệnh, xử lý được bộ dữ liệu lớn Cú pháp phức tạp hơn
Chương trình GUI khách Dễ sử dụng, giao diện trực quan Có thể có hạn chế so với SQL trực tiếp

Chúc mừng xuất dữ liệu, các nhà khoa học dữ liệu tương lai! Nhớ rằng, mỗi nhà khoa học dữ liệu vĩ đại đều bắt đầu từ nơi bạn đang đứng. Hãy tiếp tục thực hành, 保持好奇心, và sớm bạn sẽ nhảy múa với cơ sở dữ liệu như không có ai khác!

Credits: Image by storyset