Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL命令行导入SQL文件

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

作者:今晚哒老虎

在数据库管理中,经常需要将已有的 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

如果暂时无法安装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文件的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文