悠悠楠杉
Sublime批量执行MySQL脚本文件方法:适用于初始化或部署场景的高效操作指南
在日常开发或运维工作中,我们经常遇到需要批量执行MySQL脚本的场景:比如新环境初始化时创建50张表结构,版本升级时依次运行20个增量脚本,或者需要在多套测试环境重复部署相同的数据结构。传统的手动复制粘贴方式不仅效率低下,还容易漏执行脚本。今天分享如何通过Sublime Text实现高效批处理。
一、为什么选择Sublime Text?
相比Navicat等图形化工具,Sublime Text具有几个独特优势:
1. 轻量级启动:秒开的速度特别适合快速操作
2. 多文件并行处理:可同时打开数十个SQL文件而不卡顿
3. 强大的命令行集成:通过插件可直接调用mysql客户端
4. 可编程性:支持通过Python脚本扩展功能
我曾用这套方案在客户现场部署时,将原本需要2小时的手动执行过程缩短到5分钟完成。
二、环境准备阶段
2.1 必要工具安装
bash
确认已安装MySQL客户端
mysql --version
建议安装Node.js(用于某些插件)
2.2 Sublime插件配置
通过Package Control安装:
- Terminus(命令行集成)
- SQLExec(SQL语法高亮+执行)
- SideBarEnhancements(文件批量操作)
配置MySQL连接(以SQLExec为例):
json { "connections": { "dev_db": { "type": "mysql", "host": "localhost", "user": "root", "pass": "yourpassword", "db": "test_db" } } }
三、核心操作流程
3.1 单脚本快速执行方案
- 打开SQL文件后按
Ctrl+Shift+P
- 输入
SQLExec: Execute Query
- 选择预设的连接配置
小技巧:绑定快捷键到F8可进一步提升效率
3.2 批处理多文件方法
方案A:使用内置构建系统
1. 创建新构建系统(Tools > Build System > New Build System)
json
{
"cmd": ["mysql -u root -p密码 < $file"],
"working_dir": "$file_path"
}
2. 全选文件后右键"Build with"
方案B:编写Python脚本python
import sublime_plugin
import subprocess
class BatchExecSqlCommand(sublimeplugin.TextCommand):
def run(self, edit):
for file in self.view.window().selectedfiles():
subprocess.run(f"mysql -u root < {file.path()}", shell=True)
3.3 高级技巧:错误处理机制
建议在脚本开头添加:
sql
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO';
四、实战场景解决方案
4.1 初始化数据库环境
- 按
Ctrl+K
然后Ctrl+B
调出侧边栏 - 全选所有DDL脚本文件
- 通过Terminus批量执行(注意文件顺序)
4.2 持续集成环境集成
可结合Makefile实现自动化:
makefile
deploy:
@for sql in $(shell ls *.sql | sort -n); do \
mysql -h $${DB_HOST} -u $${DB_USER} < $${sql}; \
done
五、常见问题排查
中文乱码问题:
在SQL文件首行添加:
sql SET NAMES utf8mb4;
执行顺序错乱:
建议采用数字前缀命名:
01_create_tables.sql 02_insert_data.sql
大文件执行超时:
修改my.cnf配置:
max_allowed_packet=256M wait_timeout=28800
六、性能优化建议
- 对于超过50MB的脚本文件,建议拆分为多个小文件
- 事务型操作建议包裹在单个事务中:
sql START TRANSACTION; -- 执行语句 COMMIT;
- 使用
tee
命令记录执行日志:
bash mysql -u root -e "source script.sql" | tee output.log
通过这套方法,我们团队在最近一次系统迁移中,成功在30分钟内完成了包含387个脚本的数据库部署,且实现了零错误执行。关键在于前期做好脚本分类和顺序规划,配合Sublime的高效批量处理能力,可以大幅提升DBA的工作效率。