MySQL数据库导入导出大文件,source命令实操

为什么大文件导入导出推荐用 source 命令

当 SQL 文件体积达到几百 MB 甚至几 GB 时,用 phpMyAdmin 或图形工具导入经常超时或内存溢出。
MySQL 自带的 source 命令在命令行下执行,不依赖 Web 环境,能稳定处理大文件。
本文面向零基础用户,带你完成从导出到导入的全过程,并给出常见报错的处理方法。

操作前的环境确认

开始之前,请先确认以下三点,避免中途卡住:

  • 已安装 MySQL 客户端,能在终端执行 mysql --version 看到版本号。
  • 拥有目标数据库的账号和密码,且账号具备 FILE 权限(导入导出大文件时可能用到)。
  • SQL 文件已上传到服务器,建议放在 /tmp 或数据盘目录,并记录完整路径。

如果文件在本地电脑,先用 scp 或宝塔面板文件管理上传到服务器。
例如:

scp /本地路径/backup.sql root@服务器IP:/tmp/

导出大文件:mysqldump 基础用法

导出是导入的前提。
假设要导出数据库 mydb,用户 root,密码 123456,执行:

mysqldump -u root -p mydb > /tmp/mydb_backup.sql

回车后输入密码。
如果数据库很大,建议加上 --single-transaction 保持一致性,并压缩输出节省空间:

mysqldump -u root -p --single-transaction mydb | gzip > /tmp/mydb_backup.sql.gz

导出完成后,用 ls -lh /tmp/mydb_backup.sql* 查看文件大小,确认不是 0 字节。

导入大文件:source 命令完整步骤

第一步:登录 MySQL

在终端执行:

mysql -u root -p

输入密码后进入 mysql> 提示符。

第二步:选择目标数据库

如果数据库已存在,直接切换:

use mydb;

如果还没创建,先执行:

CREATE DATABASE mydb DEFAULT CHARACTER SET utf8mb4;
use mydb;

第三步:执行 source 导入

在 mysql> 提示符下输入:

source /tmp/mydb_backup.sql;

如果文件是 .gz 压缩包,需要先解压:

gunzip /tmp/mydb_backup.sql.gz

然后重复上面的 source 命令。

导入过程中屏幕可能快速滚动,不要中断。
完成后会出现 Query OK 或返回 mysql> 提示符。

第四步:验证导入结果

导入结束后,执行:

SHOW TABLES;
SELECT COUNT(*) FROM 某张表;

对比导出前的表数量和行数,确认数据完整。

避坑指南:大文件导入常见报错与处理

  • 报错 ERROR 2006 (HY000): MySQL server has gone away:通常是 max_allowed_packet 太小。临时调大:SET GLOBAL max_allowed_packet=1024*1024*1024; 然后重新导入。永久生效需修改 my.cnf 中的 max_allowed_packet 并重启 MySQL。
  • 报错 ERROR 1044 (42000): Access denied:当前账号没有目标库权限,换用高权限账号或让管理员授权。
  • 导入中途卡住不动:检查磁盘空间 df -h,以及 SQL 文件是否完整。
  • 中文乱码:确认导入时数据库字符集为 utf8mb4,导出时也使用相同字符集。

几个容易被忽略的细节

source 命令后必须跟绝对路径,不能写相对路径,否则会提示找不到文件。
如果 SQL 文件里有 CREATE DATABASE 语句,导入前可以不手动建库,但建议先确认不会覆盖现有库。
导入大文件期间,避免同时执行其他写操作,减少锁冲突。

常见疑问

source 和 mysql < 文件 有什么区别?
source 是在 MySQL 交互界面内执行,适合边导入边观察;mysql -u root -p mydb < backup.sql 是在系统命令行直接导入,两者效果类似,大文件都可用。

导入到一半失败了,能续传吗?
MySQL 不支持断点续传。需要清空目标库或删掉已导入的表,重新执行 source。建议导入前先备份。

source 命令支持 Windows 吗?
支持,在 MySQL 命令行客户端中同样使用 source D:/backup.sql,注意路径用正斜杠或双反斜杠。

导入后表数量对但数据少了?
检查 SQL 文件是否在导出时用了 --where 条件,或导入时是否被 max_allowed_packet 截断。重新导出并导入一次。

掌握以上步骤后,几百 MB 到几 GB 的 SQL 文件都能通过 source 命令稳定导入。
遇到报错时优先看错误码,再对照避坑部分调整参数。

分享到:
上一篇
MySQL数据库备份加密,防止备份泄露
下一篇
Redis持久化RDB与AOF两种模式对比选型
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意