MySQL 支持 SELECT ... INTO OUTFILE 直接導出文本文件,Excel 可直接打開。但默認導出編碼為服務器字符集(常為 utf8),Excel 默認以 GBK 打開 CSV,導致中文亂碼。本文演示導出全流程與編碼轉換技巧。
CREATE TABLE users (
username VARCHAR(40) NOT NULL,
password VARCHAR(40) NOT NULL
) CHARSET=utf8;
INSERT INTO users VALUES ('admin', 'admin');
INSERT INTO users VALUES ('理央silence', '王培坤');
SELECT username, password FROM users INTO OUTFILE 'd:\\test.xls';
打開 Excel 顯示亂碼(UTF-8 字節被 GBK 解析)。

SELECT CONVERT(username USING gb2312), CONVERT(password USING gb2312) FROM users INTO OUTFILE 'd:\\test.xls';
或使用 gbk(MySQL 以 gb2312 別名支援 GBK)。

SELECT username, password FROM users INTO OUTFILE 'd:\\test.csv' FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n';
FIELDS TERMINATED BY:列分隔符(默認 Tab)。ENCLOSED BY:包圍字符(默認無)。ESCAPED BY:轉義字符(默認 \)。LINES TERMINATED BY:行結束符(默認 \n,Windows 建議 \r\n)。FILE 權限:GRANT FILE ON *.* TO 'user'@'host';LOAD DATA INFILE 'd:\\test.csv' INTO TABLE users FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '\\' LINES TERMINATED BY '\r\n' IGNORE 1 LINES; -- 跳過標題行
參數需與導出完全一致。LOCAL 關鍵字表示從客戶端讀取文件(需客戶端與服務器均允許)。
SELECT ... INTO OUTFILE 導出,LOAD DATA INFILE 導入,雙劍合璧。CONVERT(... USING gbk) 或導入時指定字符集,否則亂碼。