1. 簡介
MySQL 是一種廣泛應用於許多網站與應用程式的資料庫管理系統。其中,「mysqldump」指令在進行資料庫備份或遷移時,是非常重要的工具。特別是在需要從大型資料庫中僅備份特定資料表時,這個指令非常實用。
本文將詳細解說如何使用 mysqldump 指令指定特定資料表並進行匯出。不僅適合初學者理解,亦會介紹中階使用者常用的參數與進階應用方式。
2. mysqldump 指令的基本語法
首先,讓我們來確認 mysqldump 指令的基本用法。此指令可用於匯出(備份)整個資料庫或特定資料表的結構與資料。
基本語法
只要指定使用者名稱、密碼、資料庫名稱與資料表名稱,就可以備份特定資料表,如下所示:
mysqldump -u 使用者名稱 -p 資料庫名稱 資料表名稱 > 輸出檔案.sql
-u
:指定連線至資料庫的使用者名稱-p
:指定密碼(輸入時會顯示提示)資料庫名稱
:欲匯出的資料庫名稱資料表名稱
:欲匯出的特定資料表名稱> 輸出檔案.sql
:指定輸出的檔案名稱
常用選項
--single-transaction
:對 InnoDB 資料表而言,可在保持交易一致性的情況下進行備份--skip-lock-tables
:避免在備份過程中鎖定資料表

3. 匯出特定資料表的方法
指定單一資料表
若只想備份某個特定資料表,可在資料庫名稱後加上資料表名稱。以下範例僅匯出 users
資料表:
mysqldump -u root -p my_database users > users_dump.sql
此指令會將 my_database
資料庫內的 users
資料表結構與資料存至 users_dump.sql
。
指定多個資料表
若需要一次備份多個資料表,可以以空格分隔各資料表名稱:
mysqldump -u root -p my_database users orders products > multiple_tables_dump.sql
上述範例會同時匯出 users
、orders
、products
三個資料表。
使用資料表清單進行匯出
當需要匯出的資料表數量龐大時,逐一手動輸入會非常不便。此時可以透過 SHOW TABLES
指令或腳本,自動生成欲匯出的資料表清單。
mysql -u root -p my_database -N -e "SHOW TABLES LIKE 'hoge%'" > table_list.txt
mysqldump -u root -p my_database `cat table_list.txt` > partial_dump.sql
此方法能有效率地僅備份符合指定模式的資料表。
4. 常用選項與進階應用
mysqldump 提供許多選項,可依需求彈性備份。以下介紹幾個常見的情境:
僅匯出結構
若只需備份資料表結構而不需要資料,可使用 --no-data
選項。
mysqldump -u root -p my_database --no-data users > users_structure.sql
此指令只會匯出 users
資料表的結構,資料不會被包含。
僅匯出資料
若只需備份資料而不需結構,可使用 --no-create-info
選項。
mysqldump -u root -p my_database --no-create-info users > users_data.sql
此指令僅會匯出資料,不包含資料表結構。
依條件匯出特定資料
利用 --where
選項,可以僅匯出符合條件的資料。例如僅匯出 id
大於 100 的資料:
mysqldump -u root -p my_database users --where="id > 100" > users_filtered_dump.sql
如此可從大型資料庫中抽取所需的資料進行備份。

5. 實際使用範例
案例1:備份單一資料表
例如要備份 employees
資料庫中的 salary
資料表,可以這樣操作:
mysqldump -u root -p employees salary > salary_dump.sql
案例2:依條件備份資料
若只想匯出特定範圍的資料,可使用 --where
。例如備份 users
資料表中 id
大於 100 的資料:
mysqldump -u root -p my_database users --where="id > 100" > users_partial_dump.sql
6. 注意事項與最佳實務
資料表鎖定問題
使用 mysqldump 時,可能因為資料表被鎖定導致其他操作無法進行。特別是在系統運行中,建議使用 --single-transaction
選項以避免影響。同時,對 InnoDB 資料表也建議搭配 --skip-lock-tables
使用。
大容量資料的處理方式
當資料量龐大時,匯出過程可能耗時很長。可以利用 gzip
即時壓縮以節省磁碟空間與時間:
mysqldump -u root -p my_database | gzip > backup_$(date +%Y%m%d).sql.gz
此指令會在匯出的同時進行壓縮,節省儲存空間。

7. 結論
本文介紹了如何使用 mysqldump 指令匯出特定資料表,涵蓋了基本語法、依條件匯出、僅結構或僅資料匯出,以及進階自動化腳本應用。mysqldump 是非常強大的工具,若能正確運用,將能有效進行資料備份與遷移。
下篇文章將會更深入探討 mysqldump 的進階參數,並與其他備份工具進行比較。