萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 命令列匯入匯出實戰:mysqldump、source、編碼亂碼一網打盡

匯出

1. 整庫匯出

mysqldump -u user -p dbname > backup.sql
# 指定編碼(防亂碼)
mysqldump -u user -p --default-character-set=utf8mb4 dbname > backup.sql

2. 單表匯出

mysqldump -u user -p dbname table_name > table_backup.sql

3. 僅匯出結構(無資料)

mysqldump -u user -p -d --add-drop-table dbname > schema.sql
  • -d:no-data
  • --add-drop-table:每個 CREATE 前加 DROP TABLE

4. 遠端匯出

mysqldump -h 192.168.1.100 -u user -p dbname > backup.sql

匯入

1. 互動模式 SOURCE

mysql -u user -p --default-character-set=utf8mb4
USE dbname;
SOURCE /path/backup.sql;

2. 管道導入(非互動,適合腳本)

mysql -u user -p --default-character-set=utf8mb4 dbname < backup.sql

3. 壓縮檔直接導入

gunzip < backup.sql.gz | mysql -u user -p dbname
# 或 7z
7za x -so backup.sql.7z | mysql -u user -p dbname

亂碼解決鐵律

導出編碼 = 導入編碼 = 資料庫編碼 = 連線編碼 = 檔案實際編碼

常見錯誤組合

導出編碼導入編碼結果
utf8mb4utf8mb4✅ 正常
latin1utf8mb4❌ 雙重編碼亂碼
utf8mb4latin1❌ 截斷/問號
未指定(預設latin1)utf8mb4❌ 中文變 ???

修正已亂碼資料

# 1. 以 latin1 導出(當作二進位)
mysqldump --default-character-set=latin1 -uroot -p dbname > dump_latin1.sql

# 2. 檔案轉碼
iconv -f latin1 -t utf8 dump_latin1.sql > dump_utf8.sql

# 3. 檔案頭插入 SET NAMES
sed -i '1i SET NAMES utf8mb4;' dump_utf8.sql

# 4. 以 utf8mb4 導入
mysql --default-character-set=utf8mb4 -uroot -p dbname < dump_utf8.sql

實用參數速查

參數作用
--single-transactionInnoDB 熱備份,不鎖表
--quick大表逐行讀取,減少記憶體
--routines --triggers --events包含存儲過程/觸發器/事件
--no-create-info僅導出資料
--where="id>1000"條件導出
copyright © 萬盛學電腦網 all rights reserved