位於 mysql/bin/,功能遠超 mysqlimport。可將整庫導出為單一 SQL 腳本檔,含結構(CREATE)與資料(INSERT)。
# 全庫導出
bin/mysqldump -p Meet_A_Geek > MeetAGeek_Dump_File.txt
# 單表導出
bin/mysqldump -p Meet_A_Geek Orders > MeetAGeek_Orders.txt
# 條件導出(WHERE)
bin/mysqldump -p --where="Order_ID > 2000" Meet_A_Geek Orders > Special_Dump.txt
| 參數 | 功能 |
|---|---|
--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 | 僅導出結構,不含 INSERT |
--opt | 啟用所有加速導出/導入參數組合(預設開啟) |
-q / --quick | 大表逐行輸出不佔記憶體 |
-T / --tab=路徑 | 產生兩檔:.sql(結構)、.txt(資料),需目錄存在且有權限 |
-w / --where | 條件過濾導出資料 |
bin/mysqldump -p --where="Order_Date >= '2004-01-01'" \
--tab=/home/mark --no-create-info --fields-terminated-by=, \
Meet_A_Geek Orders
與 LOAD DATA INFILE 互為逆操作,選項幾乎相同。優勢:可使用完整 SELECT 語法(JOIN、子查詢、函數),直接輸出查詢結果。
# 1. 確認 mysqld 運行
bin/mysqladmin ping
# 2. 進入 mysql 命令列
bin/mysql -p Meet_A_Geek
# 3. 執行匯出
SELECT * INTO OUTFILE '/home/mark/Orders.txt'
FIELDS TERMINATED BY ','
FROM Orders
WHERE Order_Date >= '2004-01-01';
建立 Report_G.rpt 腳本檔:
USE Meet_A_Geek;
INSERT INTO Customers (Customer_ID, Last_Name, First_Name) VALUES (NULL, 'Kinnard', 'Vicky');
INSERT INTO Customers (Customer_ID, Last_Name, First_Name) VALUES (NULL, 'Kinnard', 'Steven');
INSERT INTO Customers (Customer_ID, Last_Name, First_Name) VALUES (NULL, 'Brown', 'Sam');
SELECT Last_Name INTO OUTFILE '/home/mark/Report.rpt' FROM Customers WHERE Customer_ID > 1;
執行:bin/mysql < Report_G.rpt,輸出檔即為報表結果。
用資料定義語言(DDL)完整描述資料庫結構的語句集合。