首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

mysqldump 命令深度詳解:備份、遷移、條件導出、SELECT INTO OUTFILE 替代方案

     編輯:MySQL 資料庫相關知識

為何需要導出?

  • 定期備份防資料遺失
  • 跨環境遷移、版本升級
  • 資料共享(如書商共享新書資料、醫院病歷流轉)

mysqldump 核心優勢

將整庫/單表/條件資料導出為 純文本 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-locksINSERT 前後加 LOCK/UNLOCK TABLE,防併發干擾
-c / --complete-insertINSERT 含欄位名,利於異構導入
--delayed-insertINSERT 加 DELAYED 選項
-F / --flush-logs導出前 flush logs
-f / --force遇錯誤繼續導出
--fullCREATE TABLE 含附加資訊
-l / --lock-tables導出時鎖表
-t / --no-create-info不導出 CREATE TABLE(僅資料)
-d / --no-data不導出 INSERT(僅結構)
--opt啟用速度優化組合(預設開啟)
-q / --quick不載入記憶體,邊讀邊寫,適合大表
-T / --tab=path輸出兩檔:.sql (結構) + .txt (資料)
-w / --where條件過濾導出資料

替代方案:SELECT INTO OUTFILE

適用於需自定義輸出格式、多表 JOIN、報表生成場景:

SELECT * INTO OUTFILE '/home/mark/Orders.txt'
FIELDS TERMINATED BY ','
FROM Orders WHERE Order_Date >= '2000-01-01';

可結合 `LOAD DATA INFILE` 實現高效 ETL 迴路。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved