資料備份、跨環境遷移、版本升級、共享給合作夥伴……種種情境都仰賴可靠的匯出機制。mysqldump 是 MySQL 官方提供的邏輯備份工具,能將整個資料庫或特定資料表轉為包含 CREATE TABLE 與 INSERT 陳述式的 SQL 腳本,支援跨版本、跨平台還原,是最通用的備份手段。
mysqldump [選項] -u 用戶 -p 資料庫名稱 [資料表名稱...] > 輸出檔.sql
mysqldump -u root -p Meet_A_Geek > MeetAGeek_Dump_File.txtmysqldump -u root -p Meet_A_Geek Orders > MeetAGeek_Orders.txtmysqldump -u root -p --where="Order_ID > 2000" Meet_A_Geek Orders > Special_Dump.txt| 參數 | 說明 |
|---|---|
--add-drop-table | 每個 CREATE TABLE 前加 DROP TABLE IF EXISTS,避免還原衝突 |
--add-locks | 在 INSERT 區塊加上 LOCK/UNLOCK TABLES,防止併發衝突 |
-c, --complete-insert | INSERT 陳述式包含欄位名,利於異構匯入 |
--delayed-insert | 使用 INSERT DELAYED 降低鎖定影響 |
-F, --flush-logs | 備份前刷新二進制日誌,配合增量備份 |
-f, --force | 發生錯誤仍繼續執行 |
--full | 在 CREATE TABLE 保留完整選項 |
-l, --lock-tables | 備份期間鎖定資料表(MyISAM 適用) |
-t, --no-create-info | 僅匯出資料,不含 DDL |
-d, --no-data | 僅匯出結構,不含資料 |
--opt | 啟用一組預設優化參數(含上述多項),預設開啟 |
-q, --quick | 逐行讀取寫入,不佔用大量記憶體,大表必備 |
-T, --tab=路徑 | 產生兩檔:.sql(結構)與 .txt(資料),需目錄存在且有權限 |
-w, --where="條件" | 依 WHERE 條件篩選資料 |
mysqldump -u root -p --where="Order_Date >= '2004-01-01'" \
--tab=/home/mark --no-create-info \
--fields-terminated-by=, Meet_A_Geek Orders
輸出的 Orders.txt 即為逗號分隔的純資料檔,直接可用 Excel 開啟。
若需更靈活的格式控制(如多表 JOIN、自訂欄位順序),可在 MySQL 客戶端直接執行:
SELECT * INTO OUTFILE '/home/mark/Orders.txt'
FIELDS TERMINATED BY ','
FROM Orders WHERE Order_Date >= '2004-01-01';
此指令將查詢結果直接導向檔案,亦可作為簡易報表產生器。
以資料定義語言(DDL)完整描述資料庫結構的一組陳述式集合,包含資料表、欄位、索引、約束等定義。