Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sử dụng CONCAT_WS() xuất CSV trong MySQL

Xuất định dạng CSV trực tiếp từ MySQL với CONCAT_WS()

CONCAT_WS(separator, cot1, cot2, ...) = Concatenate With Separator. Tự động bỏ qua NULL, rất tiện tạo CSV.

Cú pháp

SELECT CONCAT_WS(',', cot1, cot2, cot3) AS CSVFormat
FROM tenBang;

Ví dụ minh họa

Bảng CSVFormatOutputs:

CREATE TABLE CSVFormatOutputs (
    StudentId INT NOT NULL AUTO_INCREMENT,
    StudentName VARCHAR(20),
    StudentAge INT,
    PRIMARY KEY (StudentId)
);
INSERT INTO CSVFormatOutputs (StudentName, StudentAge) VALUES
('Mike',23), ('John',26), ('Sam',19), ('Carol',27), ('Bob',24);

Xuất CSV:

SELECT CONCAT_WS(',', StudentId, StudentName, StudentAge) AS CSVFormat
FROM CSVFormatOutputs;

Kết quả

+------------+
| CSVFormat  |
+------------+
| 1,Mike,23  |
| 2,John,26  |
| 3,Sam,19   |
| 4,Carol,27 |
| 5,Bob,24   |
+------------+

So sánh CONCAT vs CONCAT_WS

HàmXử lý NULLVí dụ
CONCAT(',', a, b)NULL → kết quả NULLNULL
CONCAT_WS(',', a, b)Bỏ qua NULL'a,b' (nếu a,b không NULL)

Xuất CSV hoàn chỉnh (có header, escape quote)

MySQL thuần không có export CSV built-in. Các cách:

  1. SELECT ... INTO OUTFILE (cần quyền FILE, ghi file server):
    SELECT * FROM bang INTO OUTFILE '/tmp/out.csv' 
    FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';
  2. Client tool: MySQL Workbench, DBeaver, HeidiSQL → Export CSV.
  3. Command line: mysql -e "SELECT ..." --batch --raw | sed 's/\t/,/g' > out.csv.

Lưu ý

  • CONCAT_WS chỉ dùng cho hiển thị/ad-hoc, không thay thế export chính thức.
  • Dữ liệu chứa dấu phẩy/ngoặc kép → cần escape thủ công hoặc dùng INTO OUTFILE.