mysqldump 將整個資料庫轉為單一純文字檔,包含重建資料庫所需的所有 DDL (CREATE) 與 DML (INSERT) 語句,可直接管線導入:mysql < dump.sql。
mysqldump [選項] -u 用戶 -p 資料庫名 [表名...] > 輸出檔.sql
| 需求 | 指令 |
|---|---|
| 備份整庫 Meet_A_Geek | mysqldump -p Meet_A_Geek > MeetAGeek_Dump.sql |
| 僅備份 Orders 表 | mysqldump -p Meet_A_Geek Orders > Orders.sql |
| 條件篩選:Order_ID > 2000 | mysqldump -p --where="Order_ID > 2000" Meet_A_Geek Orders > Special.sql |
| 匯出供 Excel 用 CSV (無建表語句) | 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 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 | 不輸出 CREATE TABLE,只匯出資料 |
-d, --no-data | 只輸出結構,不輸出資料 |
--opt | 開啟所有加速匯出/匯入的選項組合 (預設開啟) |
-q, --quick | 不緩存全表結果,邊讀邊寫,低記憶體模式 |
-T, --tab=路徑 | 產生兩檔:表.sql (DDL) + 表.txt (資料) |
-w, --where="條件" | 依 WHERE 篩選匯出資料 |
若需更靈活格式 (如報表產生器),可直接在 SQL 中使用:
SELECT * INTO OUTFILE '/home/mark/Orders.txt'
FIELDS TERMINATED BY ','
FROM Orders
WHERE Order_Date >= '2000-01-01';
UNION、CASE 產生複雜報表。FILE 權限,輸出目錄需 mysqld 進程寫入權限。Schema:以資料定義語言 (DDL) 表達的語句集合,完整描述資料庫結構。