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

測試必備技能:MySQL 命令行導入腳本數據全攻略

     編輯:MySQL 綜合教學

測試必備技能:MySQL 命令行導入腳本數據全攻略

在測試與運維場景中,往往面臨無法使用圖形化客戶端(Navicat、DataGrip 等)的服務器環境。掌握 MySQL 命令行導入 SQL 腳本,是每位測試工程師與開發者的必備硬技能。

一、 場景痛點

  • 生產/預發環境為安全合規,禁用 3306 端口外網訪問
  • 堡壘機/跳板機僅開放 SSH,無圖形界面
  • 大體積 SQL 文件(>100MB)圖形工具易卡死、超時

二、 前置條件

  1. 熟悉基本 MySQL 命令:mysql -u root -p123456 含義(用戶 root,密碼 123456)
  2. 目標服務器已安裝 MySQL 客戶端
  3. SQL 腳本文件已上傳至服務器當前目錄(如 idomysqltest.sql)
  4. 明確目標數據庫實例名(如 szmzcz)

三、 核心命令:一行搞定導入

mysql -uroot -p123456 -D szmzcz < idomysqltest.sql

參數解析:

四、 進階用法與避坑指南

1. 指定字符集,防止中文亂碼

mysql -uroot -p123456 --default-character-set=utf8mb4 -D szmzcz < idomysqltest.sql

2. 大文件導入優化參數

mysql -uroot -p123456 --max_allowed_packet=1G --net_buffer_length=1M -D szmzcz < huge_data.sql

3. Windows 環境特殊字符處理

mysql -e "source idomysqltest.sql" -uroot -p123456 -D szmzcz

4. 遠程服務器導入

mysql -h 10.0.0.5 -uroot -p123456 -D szmzcz < idomysqltest.sql

5. 忽略錯誤強制執行(慎用)

mysql --force -uroot -p123456 -D szmzcz < idomysqltest.sql

五、 常見報錯與解決方案

參數含義
-u用戶名
-p密碼(生產環境建議交互式輸入,避免歷史記錄洩露)
-D指定默認數據庫(等同于 USE db_name;)
<Shell 重定向:將文件內容作為標準輸入傳給 mysql 進程
報錯現象原因解決方案
ERROR 1049 (42000): Unknown database目標庫不存在先執行 CREATE DATABASE szmzcz;
ERROR 1064 (42000): Syntax errorSQL 語法錯誤/版本不兼容檢查腳本語法;確認 MySQL 版本兼容性
ERROR 2006 (HY000): MySQL server has gone away數據包過大/超時調大 max_allowed_packet、wait_timeout
ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes單條 SQL 超過限制同上,或拆分大 SQL

六、 驗證導入結果

# 進入數據庫檢查表數量
mysql -uroot -p123456 -D szmzcz -e "SHOW TABLES;"

# 檢查核心表行數
mysql -uroot -p123456 -D szmzcz -e "SELECT COUNT(*) FROM core_table;"

七、 替代方案速查

  • source 命令:登入 MySQL 後執行 SOURCE /path/to/file.sql;
  • 管道流式導入:cat data.sql | mysql -uroot -p db_name(適合壓縮文件 zcat data.sql.gz | mysql ...)
  • mysqldump 還原:mysql -uroot -p db_name < backup.dump(標準備份還原流程)

八、 總結

命令行導入雖「樸素」,卻是最通用、最高效、最穩健的方式。建議將常用命令封裝為 Shell 腳本(import.sh),參數化數據庫名、文件路徑,納入部署流程標準化。善於思考、積累工具箱,才能在受限環境下游刃有餘。

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