首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 導入外部 SQL 腳本完全指南:命令行與圖形化工具實戰

     編輯:MySQL 綜合教學

方法一:命令行導入(標準、可腳本化、適合自動化)

  1. 啟動 MySQL 客戶端
    mysql -u root -p
    # 輸入密碼進入交互模式
    
  2. 創建目標數據庫(如不存在)
    CREATE DATABASE IF NOT EXISTS target_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    USE target_db;
    
  3. 執行導入
    SOURCE /path/to/your_script.sql;
    -- 或在 Shell 直接執行(非交互,適合腳本)
    mysql -u root -p target_db < /path/to/your_script.sql
    

關鍵參數說明:

  • -u 用戶名
  • -p 提示輸入密碼(或 -ppassword 直接指定,注意無空格,有安全風險)
  • -h 主機地址(默認 localhost)
  • -P 端口(默認 3306)
  • --default-character-set=utf8mb4 指定導入編碼,防止亂碼
  • --force 遇錯繼續(慎用)

方法二:Navicat 圖形化導入(直觀、適合臨時操作)

  1. 建立連接:主機、端口、用戶、密碼、編碼
  2. 選中目標數據庫,右鍵 →「運行 SQL 文件」
  3. 選擇 .sql 文件,設置編碼(建議 utf8mb4),點擊「開始」
  4. 查看運行日志,確認無錯誤

其他優秀工具:DataGrip (JetBrains, 專業 IDE)、DBeaver (免費開源、跨平台)、MySQL Workbench (官方工具)、SQLyog (經典商業工具)。

大文件導入優化技巧

  • 關閉自動提交:SET autocommit=0; 導入前執行,結束後 COMMIT;,大幅減少刷盤次數
  • 禁用唯一性檢查/外鍵檢查:
    SET unique_checks=0;
    SET foreign_key_checks=0;
    -- 導入操作
    SET unique_checks=1;
    SET foreign_key_checks=1;
    
  • 調大緩存:臨時調大 innodb_buffer_pool_size、innodb_log_file_size
  • 分批導入:將超大 SQL 文件按表或按行數拆分(如 split -l 10000 big.sql part_),分批執行,便於故障恢復與進度控制
  • 使用管道流式導入:zcat dump.sql.gz | mysql -u root -p db_name 避免解壓佔用磁盤

常見坑點避雷

  • 編碼不匹配:導出時編碼 ≠ 導入時編碼 → 亂碼。統一指定 --default-character-set
  • 版本不兼容:高版本導出的 SQL 含低版本不支持的語法(如 utf8mb4_0900_ai_ci 校對規則)。導出時加 --compatible=mysql57 或手動修正
  • DEFINER 問題:視圖/存儲過程/觸發器含 DEFINER=`root`@`%`,導入目標實例無此用戶報錯。用 sed -i 's/DEFINER=[^ ]* //g' dump.sql 清理
  • GTID 污染:導出含 SET @@SESSION.GTID_NEXT=...,導入非 GTID 實例報錯。加 --set-gtid-purged=OFF 導出
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved