在 Linux 环境下导入超大 SQL 文件时,我们经常会遇到两个痛点:一是导入速度太慢,二是 SSH 终端一旦断开或网络波动,导入任务就会被迫中止(报
Terminal close -- query aborted)。本文介绍一种“脚本化 + 极速参数 + 彻底后台挂载”的组合拳方案,完美解决这两个问题,让导入任务稳如泰山!
第一步:创建导入脚本
为了避免在终端中直接输入超长命令导致被截断或误触,我们先将命令写入一个独立的 Shell 脚本中。
在终端中执行以下命令,使用
nano 编辑器创建脚本:nano /import.sh
第二步:写入极速导入代码
进入编辑器后,将以下代码一字不差地粘贴进去:
#!/bin/bash
# 1. 关闭各项检查并关闭自动提交
echo -e “SET foreign_key_checks=0; SET unique_checks=0; SET autocommit=0;” | /usr/bin/mysql –max-allowed-packet=1G –net-buffer-length=1M -u root -pUav@654321! sguav
# 2. 以流式传输导入核心 SQL 数据
cat /sguav_202606170600.sql | /usr/bin/mysql –max-allowed-packet=1G –net-buffer-length=1M -u root -pUav@654321! sguav
# 3. 手动提交事务并恢复各项检查
echo -e “COMMIT; SET foreign_key_checks=1; SET unique_checks=1;” | /usr/bin/mysql –max-allowed-packet=1G –net-buffer-length=1M -u root -pUav@654321! sguav
核心代码原理解析:
这段代码将导入过程巧妙地拆分成了三个阶段,以兼顾极致速度与数据安全:
- 第一阶段(关闭检查):通过
echo管道传入 SQL 指令,关闭外键检查(foreign_key_checks)和唯一性检查(unique_checks),同时关闭自动提交(autocommit=0)。这能省去数据库在导入时反复校验索引和频繁写磁盘的开销,大幅提升性能。 - 第二阶段(极速灌入数据):使用
cat命令将 SQL 文件以“流(Stream)”的形式直接灌入 MySQL。配合--max-allowed-packet=1G(允许超大网络包)和--net-buffer-length=1M(增大网络缓冲区),避免了频繁的网络交互,这是实现极速导入的核心。 - 第三阶段(安全收尾):数据灌入完毕后,手动执行
COMMIT提交所有事务,最后恢复外键和唯一性检查,确保数据库的完整性约束重新生效。
第三步:保存并退出编辑器
在
nano 编辑器中,依次按下键盘上的以下快捷键:Ctrl + O(字母 O,保存文件,然后按一次回车确认保存路径)Ctrl + X(退出编辑器,回到终端)
第四步:后台挂载运行脚本
回到终端后,依次执行以下两条命令:
# 赋予脚本可执行权限
chmod +x /import.sh
# 使用 setsid 彻底脱离终端,并将日志输出到文件
setsid /import.sh > /import_sql.log 2>&1 &
THE END



![[端游] 战双帕弥什一键端-Alimm.Com-码²](/wp-content/uploads/replace/2026/06/02/3861a7ed7bfaed781de7dd844193282f.png)
![[手游] [亲测能玩]青云降魔录带假人陪玩虚拟机一键端视频安装教程GM后台可刷全物品-Alimm.Com-码²](/wp-content/uploads/replace/2026/06/02/b690aed73ac5d650f0adf41f07afe0c9.jpeg)







