直接在 SQL 層級將查詢結果寫入伺服器端檔案,需 FILE 權限。
SELECT * FROM driver INTO OUTFILE 'a.txt';
預設輸出至資料庫目錄下 (如 C:\mysql\data\phptest\a.txt),欄位以 Tab (\t) 分隔,換行符 \n。
'./a.txt':資料庫目錄下 (data/)。'/a.txt':資料目錄根目錄 (data/ 的父目錄)。'C:/export/a.txt'。SELECT * FROM driver INTO OUTFILE 'a.txt'
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\r\n';
| 選項 | 說明 | 預設值 |
|---|---|---|
FIELDS TERMINATED BY | 欄位分隔符 | \t (Tab) |
ENCLOSED BY | 欄位包裹字元 (加 OPTIONALLY 僅包裹字串型) | 空 |
ESCAPED BY | 逸出字元 | \\ |
LINES TERMINATED BY | 列分隔符 | \n |
"1","Mika","Hakkinen","1"
"2","David","Coulthard","1"
"3","Michael","Schumacher","2"
注意: 目標檔案若已存在會報錯,需先刪除。
優勢: 可同時匯出 表結構 (CREATE TABLE) 與 資料,支援多表、整庫、跨資料庫,適合備份與遷移。
| 參數 | 功能 |
|---|---|
-u user -p | 指定帳號密碼 |
--opt | 啟用優化組合 (預設開啟):快速插入、鎖表、擴展插入等 |
--no-data | 僅匯出結構 (無資料) |
--no-create-info | 僅匯出資料 (無 CREATE TABLE) |
--databases db1 db2 | 匯出多個資料庫 (含 CREATE DATABASE) |
--all-databases | 匯出所有資料庫 |
-r file.sql | 輸出至檔案 (Windows 建議用此參數避免重導向編碼問題) |
# 匯出整個資料庫 (結構+資料)
mysqldump -u root -p phptest > phptest_backup.sql
# 匯出特定表
mysqldump -u root -p phptest driver > driver_only.sql
# 僅匯出結構 (建立空資料庫用)
mysqldump -u root -p --no-data phptest > phptest_schema.sql
# 匯出為 CSV 格式 (需配合 --fields-terminated-by 等參數)
mysqldump -u root -p --tab=/tmp/export --fields-terminated-by=, --fields-enclosed-by='"' phptest
mysql -u root -p phptest < phptest_backup.sql
LOAD DATA INFILE 'a.txt' INTO TABLE driver
FIELDS TERMINATED BY ',' ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 1 LINES; -- 跳過標題列
mysqlimport -u root -p --fields-terminated-by=, --fields-enclosed-by='"' phptest driver.txt
| 情境 | 推薦工具 |
|---|---|
| 完整備份 / 遷移 / 跨版本升級 | mysqldump |
| 單表大量資料高效匯入 | LOAD DATA INFILE / mysqlimport |
| 簡單查詢結果另存為檔案 | SELECT INTO OUTFILE |
| 僅需表結構 | mysqldump --no-data |