將整庫/單表/條件資料導出為 純文本 SQL 檔,包含 DDL (CREATE) 與 DML (INSERT),可直接用 `mysql < file.sql` 還原,極簡可靠。
# 全庫備份
mysqldump -p Meet_A_Geek > MeetAGeek_Dump_File.txt
# 單表備份
mysqldump -p Meet_A_Geek Orders > MeetAGeek_Orders.txt
# 條件導出(WHERE 子句)
mysqldump -p --where="Order_ID > 2000" Meet_A_Geek Orders > Special_Dump.txt
# 導出為 CSV 供 Excel 使用
mysqldump -p --where="Order_Date >= '2000-01-01'" \
--tab=/home/mark --no-create-info --fields-terminated-by=, \
Meet_A_Geek Orders
| 參數 | 作用 |
|---|---|
| --add-drop-table | 每表前加 DROP TABLE IF EXISTS,還原不報錯 |
| --add-locks | INSERT 前後加 LOCK/UNLOCK TABLE,防併發干擾 |
| -c / --complete-insert | INSERT 含欄位名,利於異構導入 |
| --delayed-insert | INSERT 加 DELAYED 選項 |
| -F / --flush-logs | 導出前 flush logs |
| -f / --force | 遇錯誤繼續導出 |
| --full | CREATE TABLE 含附加資訊 |
| -l / --lock-tables | 導出時鎖表 |
| -t / --no-create-info | 不導出 CREATE TABLE(僅資料) |
| -d / --no-data | 不導出 INSERT(僅結構) |
| --opt | 啟用速度優化組合(預設開啟) |
| -q / --quick | 不載入記憶體,邊讀邊寫,適合大表 |
| -T / --tab=path | 輸出兩檔:.sql (結構) + .txt (資料) |
| -w / --where | 條件過濾導出資料 |
適用於需自定義輸出格式、多表 JOIN、報表生成場景:
SELECT * INTO OUTFILE '/home/mark/Orders.txt'
FIELDS TERMINATED BY ','
FROM Orders WHERE Order_Date >= '2000-01-01';
可結合 `LOAD DATA INFILE` 實現高效 ETL 迴路。