MySQL命令行导入SQL文件的流程步骤

 更新时间:2025年09月17日 10:34:22   作者:今晚哒老虎  
在数据库管理中,经常需要将已有的 SQL 文件导入到 MySQL 数据库中,例如从开发环境迁移到生产环境,或者进行数据备份恢复等操作,使用命令行导入 SQL 文件是一种高效、灵活且可自动化的方式,本文给大家介绍了MySQL命令行导入SQL文件的流程步骤,需要的朋友可以参考下

1. 使用命令行直接导入

mysql -u your_username -p your_database < your_file.sql

2.分割大型 SQL 文件

如果 SQL 文件非常大,可以将其分割成多个小文件:

# 使用 split 命令分割文件(每 1000 行一个文件)
split -l 1000 large_file.sql chunk_
 
# 逐个导入分割后的文件
for file in chunk_*; do
  echo "Importing $file..."
  mysql -u your_username -p your_database < $file
done

3.使用进度显示工具(推荐)

对于大型 SQL 文件,可以使用 pv 命令(Pipe Viewer)来显示导入进度:

# 安装 pv(如果尚未安装)
sudo apt-get install pv  # Ubuntu/Debian
sudo yum install pv      # CentOS/RHEL
 
# 使用 pv 导入
pv your_file.sql | mysql -u your_username -p your_database

使用pv监控导入进度

安装好后,你可以用下面这个命令来导入并查看进度:

pv ssy-edu_2025-09-12_11-39-04_mysql_data.sql | mysql -ussy -qh -p ssy-qh

执行后,pv会显示一个进度条,包括已用时间、进度百分比、数据传输速率和预计剩余时间(ETA)。

显示更多信息
如果你想看更详细的信息,可以加上-pterb参数:

pv -pterb ssy-edu_2025-09-12_11-39-04_mysql_data.sql | mysql -ussy -qh -p ssy-qh
  • -p:显示进度条
  • -t:显示已用时间
  • -e:显示预计剩余时间(ETA)
  • -r:显示数据传输速率
  • -b:显示已传输的字节数

如果暂时无法安装pv

查看MySQL进程状态mysql -u user -p -e 'SHOW PROCESSLIST;'查看当前执行的SQL语句和状态

4.其他优化点

先清空数据库再导入 是一个非常合理且推荐的做法,尤其是在你反复遇到 Table already exists 错误和查询中断的情况下。这可以确保一个干净的初始状态,避免很多冲突。

但是,请务必谨慎操作,因为清空数据库会永久删除所有现有数据

非常重要:首先备份!(如果你需要保留当前数据)

如果你当前数据库里有需要保留的数据,请先备份:

# 使用 mysqldump 备份整个数据库
mysqldump -u your_username -p your_database > backup_before_import.sql

或者只备份某些重要的表。

使用 MySQL 命令(逐行执行)

-- 方法A:
-- 1. 连接到 MySQL
mysql -u your_username -p
 
-- 2. 选择你的数据库
USE your_database_name;
 
-- 3. 禁用外键检查,避免删除时因外键约束而失败
SET FOREIGN_KEY_CHECKS = 0;
 
-- 4. 生成并执行删除所有表的命令
-- 这会查询出所有表名,并生成一系列的 DROP TABLE 语句
SELECT CONCAT('DROP TABLE IF EXISTS `', table_name, '`;')
FROM information_schema.tables
WHERE table_schema = 'your_database_name';
 
-- 【注意】上面一句只会生成命令,不会执行。你需要复制输出的结果,然后粘贴执行。
-- 或者使用以下更自动化的方法:
-- 方法B:使用命令行工具(更高效,一键完成)
# 此命令会直接清空整个数据库
mysql -u your_username -p -e "SET FOREIGN_KEY_CHECKS = 0; \
SELECT CONCAT('DROP TABLE IF EXISTS \`', table_name, '\`;') \
FROM information_schema.tables \
WHERE table_schema = 'your_database_name'" | \
grep '^DROP' | \
mysql -u your_username -p your_database_name

一句更强力的清空命令(包括视图和存储过程):

# 1. 删除整个数据库(这会删除所有数据和表结构)
mysql -u your_username -p -e "DROP DATABASE your_database_name;"
 
# 2. 创建一个新的空数据库
mysql -u your_username -p -e "CREATE DATABASE your_database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"

这是最彻底的方法,推荐使用。

以上就是MySQL命令行导入SQL文件的流程步骤的详细内容,更多关于MySQL命令行导入SQL文件的资料请关注脚本之家其它相关文章!

相关文章

  • CentOS 7下使用rpm包安装mysql 5.7.18

    CentOS 7下使用rpm包安装mysql 5.7.18

    这篇文章主要为大家详细介绍了CentOS 7下使用rpm包安装mysql 5.7.18的教程,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • MySL实现如等级成色等特殊顺序的排序详解

    MySL实现如等级成色等特殊顺序的排序详解

    这篇文章主要为大家介绍了MySL实现如等级成色等特殊顺序的排序详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • 关于MySQL 大批量插入时如何过滤掉重复数据

    关于MySQL 大批量插入时如何过滤掉重复数据

    这篇文章主要介绍关于MySQL 大批量插入时如何过滤重复数据,比如线上库有6个表存在重复数据,其中2个表比较大,96万+和30万+,因为之前处理过相同的问题,就直接拿来了上次的Python去重脚本,脚本很简单,就是连接数据库,查出来重复数据,循环删除,需要的朋友可以参考下
    2021-09-09
  • MySql报错:Duplicate entry ‘10‘ for key ‘PRIMARY‘的解决方案

    MySql报错:Duplicate entry ‘10‘ for key&nbs

    经常遇到这个问题,今天我把这个问题记录下来,以后如果有其他人遇到相同的问题,不至于困惑,在操作数据库的时候,经常会出现Duplicate entry ‘10’ for key 'PRIMARY’这样的报错,本文将给大家讲讲如何解决这个问题,需要的朋友可以参考下
    2023-10-10
  • windows下MySQL数据库移动到其它盘

    windows下MySQL数据库移动到其它盘

    大家好,本篇文章主要讲的是windows下MySQL数据库移动到其它盘,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏
    2021-12-12
  • MySQL进行group by字段返回大量异常结果的问题解决

    MySQL进行group by字段返回大量异常结果的问题解决

    本文主要介绍了MySQL进行group by字段返回大量异常结果的问题解决,文中通过代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • MySQL ALTER语法的运用方法

    MySQL ALTER语法的运用方法

    我们今天主要向大家介绍的是MySQL ALTER语法的实际运用,如果你对这一技术,心存好奇的话,以下的文章将会揭开它的神秘面纱。
    2010-11-11
  • mysql允许所有host访问的方法

    mysql允许所有host访问的方法

    下面小编就为大家带来一篇mysql允许所有host访问的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Mysql和redis缓存不一致问题的解决方案

    Mysql和redis缓存不一致问题的解决方案

    在高并发的情况下,如果所有的数据都从数据库中去读取,那再强大的数据库系统都承受不了这个压力,因此我们会将部分数据放入缓存中,比如放入redis中,这篇文章主要给大家介绍了关于Mysql和redis缓存不一致问题的解决方案,需要的朋友可以参考下
    2022-08-08
  • MySQL数据库查询之多表查询总结

    MySQL数据库查询之多表查询总结

    最近遇到了多表查询的需求,也称为关联查询,指两个或更多个表一起完成查询操作,下面这篇文章主要给大家介绍了关于MySQL数据库查询之多表查询的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08

最新评论