Contents

mysqldump 匯出 CSV 方法小記

MySQL 提供多種方式將資料匯出為 CSV 格式,從純 SQL 指令到圖形化工具都有。本文整理幾種常用方法,並說明各自的限制與適用場景。

方法一:SELECT … INTO OUTFILE(最快速)

這是 MySQL 內建的匯出方式,直接在 MySQL 伺服器上產生 CSV 檔案,速度最快,適合大量資料。

1
2
3
4
5
6
SELECT *
FROM orders
INTO OUTFILE '/var/lib/mysql-files/orders.csv'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
LINES TERMINATED BY '\n';

常用選項說明:

選項 說明 範例
FIELDS TERMINATED BY 欄位分隔符號 ','
OPTIONALLY ENCLOSED BY 字串欄位包覆字元 '"'
LINES TERMINATED BY 換行符號 '\n''\r\n'
IGNORE 1 LINES 匯入時跳過標頭行 搭配 LOAD DATA 使用

secure_file_priv 限制

MySQL 5.7.6 之後,INTO OUTFILE 受到 secure_file_priv 系統變數限制:

1
2
-- 查看目前設定
SHOW VARIABLES LIKE 'secure_file_priv';
  • 若值為 /var/lib/mysql-files/,只能寫入該目錄
  • 若值為空字串 "",則無限制(不建議用於生產環境)
  • 若值為 NULL,則完全禁用 INTO OUTFILE

修改設定需在 my.cnf(Linux)或 my.ini(Windows)中調整:

1
2
[mysqld]
secure_file_priv = /var/lib/mysql-files/

方法二:命令列 mysql 搭配管線輸出

若無法使用 INTO OUTFILE,可在客戶端直接將查詢結果轉為 CSV:

1
2
3
4
5
mysql -u root -p -h 127.0.0.1 dbname \
  -e "SELECT id, name, email FROM users" \
  --batch --silent \
  | sed 's/\t/,/g' \
  > users.csv

加上標題行:

1
2
3
4
5
6
echo "id,name,email" > users.csv
mysql -u root -p dbname \
  -e "SELECT id, name, email FROM users" \
  --batch --silent \
  | sed 's/\t/,/g' \
  >> users.csv

--batch 會以 Tab 分隔輸出,--silent 去掉分隔線,再用 sed 把 Tab 換成逗號。

方法三:mysqldump 配合選項

mysqldump 本身不直接輸出 CSV,但可以搭配 --tab 選項,在伺服器端產生以 Tab 分隔的文字檔:

1
2
3
4
5
6
mysqldump -u root -p \
  --tab=/var/lib/mysql-files/ \
  --fields-terminated-by=',' \
  --fields-optionally-enclosed-by='"' \
  --lines-terminated-by='\n' \
  dbname tablename

這會產生兩個檔案:

  • tablename.sql:建立表格的 DDL
  • tablename.txt:實際資料(CSV 格式)

同樣受 secure_file_priv 限制,目錄必須是 MySQL 伺服器有寫入權限的路徑。

方法四:MySQL Workbench 圖形化匯出

若有安裝 MySQL Workbench,可用圖形介面操作:

  1. 執行查詢後,在結果集下方點選「Export」圖示
  2. 選擇「CSV」格式並指定輸出路徑
  3. 可自訂分隔符號、換行符號等設定

此方法不受 secure_file_priv 限制,資料傳輸在客戶端進行,適合開發時的臨時匯出。

各方法比較

方法 速度 secure_file_priv 需要工具 適用場景
INTO OUTFILE 最快 受限制 MySQL 即可 大量資料、自動化腳本
mysql + pipeline 中等 不受限 命令列 遠端匯出、客戶端控制
mysqldump –tab 受限制 命令列 需要同時備份結構
MySQL Workbench 較慢 不受限 Workbench 開發時的手動操作

參考資料