首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 命令列匯入 SQL 檔案完整操作指南:utf8 編碼設定、source 指令、Windows/Linux 路徑處理與 phpMyAdmin 匯出配合

     編輯:MySQL 資料庫相關知識

大型 SQL 檔案 (數十 MB 以上) 透過 phpMyAdmin 匯入極易逾時/斷線。命令列 mysql 客戶端配合 SOURCE 或輸入重導向,穩定、高效、支援大檔案。本文提供標準化操作流程,重點解決**中文編碼設定**與**路徑處理**兩大坑點。

標準化操作流程 (以 utf8 為例)

步驟 1:phpMyAdmin 匯出設定

  • 格式:SQL
  • 類型:INSERT (非 REPLACE/UPDATE)
  • 編碼:utf-8
  • 壓縮:None (或 gzip,匯入前解壓)
  • 儲存為 backup.sql。

步驟 2:上傳至伺服器

scp backup.sql user@db-server:/tmp/

步驟 3:SSH 登入並進入 mysql 客戶端

ssh user@db-server
mysql -u dbuser -p  # 輸入密碼進入 mysql>

步驟 4:建立/選擇目標資料庫

CREATE DATABASE IF NOT EXISTS target_db DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE target_db;

步驟 5:關鍵 - 設定連線字元集為 utf8 (非 utf-8)

SET NAMES utf8;
-- 錯誤寫法:SET NAMES utf-8;  -- 會導致中文亂碼
-- 錯誤寫法:SET CHARACTER SET utf8;  -- 僅影響字元集,不影響排序規則,仍可能亂碼

步驟 6:匯入 (兩種方式擇一)

-- 方式 A: SOURCE 指令 (在 mysql> 內部,支援 Tab 自動完成路徑)
SOURCE /tmp/backup.sql;

-- 方式 B: 輸入重導向 (在 Shell 直接執行,不進入 mysql>)
mysql -u dbuser -p target_db < /tmp/backup.sql
-- 需預先 SET NAMES utf8 不可行,改用:
mysql -u dbuser -p --default-character-set=utf8 target_db < /tmp/backup.sql

編碼驗證技巧:確認 SQL 檔案真實編碼

  1. 用 VS Code / Notepad++ 開啟 backup.sql。
  2. 查看右下角/選單編碼顯示:**UTF-8** (非 UTF-8 with BOM、非 GBK)。
  3. 若為 GBK,需在步驟 5 設定 SET NAMES gbk;。

Windows 環境路徑處理

# 進入 mysql 安裝 bin 目錄
cd C:\Program Files\MySQL\MySQL Server 5.7\bin

# 匯入 (路徑含空格需加雙引號)
mysql -u root -p --default-character-set=utf8 target_db < "D:\Backup\backup.sql"

# 或在 mysql> 內
SOURCE "D:\Backup\backup.sql";

常見錯誤與對策

錯誤現象原因解決
中文亂碼 (??? / 亂碼字元)SET NAMES 設定與檔案實際編碼不符用編輯器確認檔案編碼,對應設定 SET NAMES
ERROR 2006 (MySQL server has gone away)單條 INSERT 過大 / 逾時調大 max_allowed_packet (如 64M)、拆分檔案
ERROR 1062 (Duplicate entry)主鍵/唯一鍵衝突匯出時加 --add-drop-table 或目標表先 TRUNCATE
Access denied權限不足GRANT ALL ON target_db.* TO 'user'@'host';

大檔案優化建議

  • 關閉二進位日誌 (暫時):SET SESSION sql_log_bin = 0; (需 SUPER 權限)。
  • 關閉外鍵檢查:SET FOREIGN_KEY_CHECKS = 0; (匯入後改回 1)。
  • 關閉唯一檢查:SET UNIQUE_CHECKS = 0; (匯入後改回 1)。
  • 使用 mysqlpump (5.7.8+) 並行匯入/匯出。

掌握命令列匯入標準流程,大檔案遷移從「整晚等待、祈禱不斷線」變為「喝杯咖啡、驗證完成」的從容體驗。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved