sublime text 不执行 sql,仅高效生成、编辑和校验语句;迁移效率取决于语句是否适配目标库批量机制及能否快速发现修复语法、编码、字段错位等问题。

Sublime Text 本身不执行 SQL,也不做批量插入——它只负责高效生成、编辑和校验语句。真正影响迁移效率的,是语句结构是否适配目标数据库的批量写入机制(如 MySQL 的 INSERT INTO ... VALUES (...), (...), (...)),以及你能否快速发现并修复语法/编码/字段错位等硬伤。
用多光标 + 列选择批量补全 INSERT 字段名
从 Excel 或 CSV 导出原始数据后,常只有值行,缺字段名。手动补全几十列极易出错,尤其字段顺序与目标表不一致时。
- 先在 Sublime 中写出首行模板:
INSERT INTO users (id, username, email, created_at) VALUES - 选中括号内全部字段名(
id, username, email, created_at),按Ctrl+Shift+L(Windows/Linux)或Cmd+Shift+L(Mac)拆分为多光标 - 按
Ctrl+Shift+P输入Sort Lines并回车,可按字母序对齐字段,方便与建表语句逐列比对 - 若需批量替换旧字段名(如
user_name→username),直接Ctrl+H开启正则模式,搜索\buser_name\b,替换为username,勾选“Whole Word”避免误替
把单行 INSERT 改成多值批量格式(MySQL 兼容)
逐行 INSERT INTO ... VALUES (...); 是最慢的写法,MySQL 建议合并为一条含多组值的语句,但手改易漏逗号、括号或引号。
- 选中所有待合并的
VALUES (...);行(不含前面的INSERT) - 按
Ctrl+Shift+P输入Join Lines,合并为一行(此时末尾分号会残留) - 用正则替换:搜索
;\s*,替换为,(注意逗号后带空格),再手动删掉最后多余的, - 最终形如:
INSERT INTO users (...) VALUES (...), (...), (...); - ⚠️ 注意:MySQL 默认
max_allowed_packet限制单条语句大小,超限会报错Packets larger than max_allowed_packet are not allowed;建议每批控制在 500–1000 行,用Ctrl+G跳转行号分段处理
用正则快速校验字符串字段的引号与转义
从 Excel 复制的数据常含未转义的单引号(')、换行符或中文引号(‘’),导致 SQL 执行失败,错误信息通常是 You have an error in your SQL syntax。
- 搜索未闭合单引号:
'[^']*?$(行末无配对单引号) - 搜索中文引号:
[‘’],全部替换为英文' - 搜索内部单引号(如 O'Connor):
([^'])'([^'])→ 替换为$1''$2(SQL 标准双单引号转义) - 检查 NULL 值:若源数据用空字符串表示 NULL,搜索
, '',或('',等模式,按业务逻辑决定是否替换为, NULL,
导出前用 SQLTools 格式化 + 实时语法检查
格式混乱的 SQL 不仅难读,还容易掩盖拼写错误(比如 INTO 写成 INTO 少个字母,或 VLAUES 这类低级错误)。
- 安装
SQLTools后,打开 SQL 文件自动高亮,关键字拼错会立刻变普通文本色(如INSRT不会高亮) - 选中全部语句,按
Ctrl+Shift+P输入SQLTools: Format,自动对齐缩进、换行、空格 - 格式化后,肉眼扫一遍
VALUES每组括号数量是否匹配、逗号是否缺失、字符串是否都闭合——人眼比机器更擅长发现“看起来不对”的地方 - 导出前务必确认文件编码为
UTF-8(右下角状态栏点击编码名切换),否则中文字段可能变成乱码,导入时报Incorrect string value
真正卡住迁移进度的,往往不是语句生成速度,而是某处少了个括号、某个字段名拼错、或者某行数据里藏了个不可见的 Unicode 零宽空格。Sublime 的价值,在于把这类问题暴露得足够快、足够直观——而不是让你相信“生成完就一定能跑通”。











