萬盛學電腦網

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

MySQL 命令列匯入 .sql 檔案完整指南:Windows/Linux 通用方法

核心命令

# 進入 MySQL bin 目錄後執行
mysql -u username -p database_name < filepath.sql

兩種常見場景

場景一:SQL 檔案包含 CREATE DATABASE 語句

# 無需指定資料庫,直接導入
mysql -u root -p < /path/to/backup.sql

# Windows 範例
mysql -u root -p < D:\backup\full_backup.sql

檔案內容通常以 CREATE DATABASE db_name; USE db_name; 開頭。

場景二:SQL 檔案僅含表結構與資料(無 CREATE DATABASE)

# 必須先建好目標資料庫,再指定導入
mysql -u root -p target_db < /path/to/dump.sql

# Windows 範例
mysql -u root -p mydb < D:\backup\mydb_tables.sql

進階參數與技巧

參數用途
-h host指定遠端主機(預設 localhost)
-P port指定埠號(預設 3306)
--default-character-set=utf8mb4強制設定連線字符集,防止亂碼
--force遇錯繼續執行(慎用)
-v顯示執行進度
--max_allowed_packet=1G超大檔案導入必加,防止包過大中斷

完整範例(生產環境建議)

# Linux/macOS
mysql -h 127.0.0.1 -P 3306 -u root -p \
  --default-character-set=utf8mb4 \
  --max_allowed_packet=1G \
  my_database < /backups/20240115_full.sql

# Windows PowerShell
mysql -h 127.0.0.1 -P 3306 -u root -p `
  --default-character-set=utf8mb4 `
  --max_allowed_packet=1G `
  my_database < D:\backups\20240115_full.sql

常見問題排查

  1. Access denied:確認用戶有目標庫 CREATE/INSERT 權限
  2. Unknown database:場景二需先 CREATE DATABASE target_db CHARACTER SET utf8mb4;
  3. ERROR 2006 (MySQL server has gone away):增大 max_allowed_packet 並檢查 wait_timeout
  4. 亂碼:確保導出/導入字符集一致,建議全鏈路 utf8mb4
  5. 檔案過大導入緩慢:
    • 關閉索引:ALTER TABLE t DISABLE KEYS; 導入後 ENABLE KEYS;
    • 關閉外鍵檢查:SET FOREIGN_KEY_CHECKS=0;
    • 使用 LOAD DATA INFILE 替代 INSERT

替代工具推薦

  • mysqlpump (MySQL 5.7+):並行導出/導入,速度更快
  • mydumper/myloader:多執行緒、壓縮、斷點續傳
  • Percona XtraBackup:物理熱備份,大數據量恢復最快
copyright © 萬盛學電腦網 all rights reserved