当前位置:首页 > 问答 > 正文

MySQL导入 数据库恢复:如何在命令行CMD中快速导入MySQL数据库?

🚀 MySQL快速导入/数据库恢复指南(CMD命令行版)

🔧 基础命令语法

直接命令行导入(推荐)

mysql -u 用户名 -p --default-character-set=utf8mb4 数据库名 < 文件路径

示例

mysql -u root -p123456 --default-character-set=utf8mb4 mydb < C:\backup\data.sql
  • 💡 提示-p后直接跟密码,无需空格;--default-character-set=utf8mb4避免中文乱码。

MySQL控制台内导入

-- 登录MySQL
mysql -u 用户名 -p
-- 选择数据库
USE 数据库名;
-- 执行导入
SOURCE 文件路径;

示例

mysql> CREATE DATABASE mydb;
mysql> USE mydb;
mysql> SOURCE D:/data/dump.sql;

💻 Windows CMD环境适配

路径规范

  • 使用反斜杠\\双反斜杠\\\\
    mysql -u root -p mydb C:\\data\\dump.sql
  • 🚫 避免路径空格:若路径含空格,用引号包裹:
    mysql -u root -p mydb < "C:\My Files\data.sql"

服务启动检查

  • 确保MySQL服务运行:
    net start MySQL服务名  # 如:net start MySQL80

提升导入速度的技巧

禁用索引与自动提交

-- 导入前执行
ALTER TABLE 表名 DISABLE KEYS;
SET autocommit=0;
-- 导入后执行
ALTER TABLE 表名 ENABLE KEYS;
SET autocommit=1;

使用LOAD DATA INFILE(CSV文件)

LOAD DATA LOCAL INFILE 'C:/data.csv' 
INTO TABLE 表名 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY '\n' 
IGNORE 1 LINES;
  • 💡 适用场景:大批量结构化数据导入,速度比SQL文件快10倍以上!

调整MySQL配置

  • 修改my.inimy.cnf
    [mysqld]
    max_allowed_packet=64M  # 支持大文件
    innodb_buffer_pool_size=1G  # 增大内存缓冲

    重启服务后生效。

    MySQL导入 数据库恢复:如何在命令行CMD中快速导入MySQL数据库?

常见问题解决

错误:No database selected

  • 原因:未指定数据库。
  • 解决
    mysql -u root -p mydb < dump.sql  # 命令中明确数据库名

    USE mydb;
    SOURCE dump.sql;

错误:MySQL server has gone away

  • 原因:文件过大或超时。
  • 解决
    • 增加max_allowed_packet至128M。
    • 分批导入(如每10万行分割文件)。

路径错误

  • 检查:确认文件存在于指定路径,使用绝对路径而非相对路径。

📝 完整步骤示例

  1. 打开CMD,导航到MySQL的bin目录:
    cd C:\Program Files\MySQL\MySQL Server 8.0\bin
  2. 执行导入命令
    mysql -u root -p --default-character-set=utf8mb4 mydb < C:\data\full_backup.sql
  3. 验证导入
    mysql> SHOW TABLES;
    mysql> SELECT * FROM 表名 LIMIT 10;

🎯 关键点总结

场景 命令/方法 速度 适用文件类型
快速恢复整个数据库 mysql -u ... < dump.sql SQL
大批量CSV数据导入 LOAD DATA INFILE CSV
图形化工具替代方案 Navicat/DBeaver导入 SQL/CSV

🔥 最后提醒:导入前务必备份现有数据库,避免数据覆盖!

MySQL导入 数据库恢复:如何在命令行CMD中快速导入MySQL数据库?

MySQL导入 数据库恢复:如何在命令行CMD中快速导入MySQL数据库?

发表评论