sqlminify在sublime text中不存在,package control无此插件;所谓“sql压缩”需通过自建build system调用sqlparse或pg_format等外部cli工具实现,不可依赖插件或误称名称。

SQLMinify 在 Sublime Text 里根本不存在
Sublime Text 官方 Package Control 仓库中没有叫 SQLMinify 的插件,也没任何维护中的包提供“SQL 压缩”或“SQL 混淆”功能。所谓“SQLMinify”,是把其他语言(如 JavaScript)的 minify 工具名套用到 SQL 上的误称——SQL 不像 JS 那样有标准压缩语法,也没有公认的“混淆”语义(表名、字段名改写会直接导致执行失败)。你搜不到、装不上、配不了,不是操作问题,是名字本身就不对。
想压缩 SQL 脚本?只能靠外部 CLI 工具链
真正可行的做法,是把 SQL 文件丢给命令行工具处理,再让 Sublime 调用它。目前只有两类工具勉强可用:
-
sqlparse可以移除多余空格和换行,但不改写语义,命令是:python -m sqlparse -o stdout --strip-comments -
pg_format(仅 PostgreSQL)支持紧凑输出,加--compact参数,但它会重排结构,不适合生产环境直接使用
注意:sqlparse 的 --strip-comments 会删掉所有注释,包括 /*+ hint */ 这类执行提示;pg_format 对 MySQL 或 T-SQL 语法解析会报错,不能混用。
Sublime 调用压缩命令必须用 Build System,别碰插件
Package Control 里搜 “minify sql” 找到的全是过时或伪造包,安装后要么静默失效,要么把 SELECT 改成 select 再拼成一行,结果数据库直接报错。唯一可靠路径是自建 Build System:
- 菜单 → Tools → Build System → New Build System
- 填入(以
sqlparse为例):{ "cmd": ["python", "-m", "sqlparse", "-o", "stdout", "--strip-comments"], "file_regex": "^(.*?):([0-9]+):?([0-9]+)?:? (.*)$", "selector": "source.sql", "working_dir": "$file_path" } - 保存为
SQLCompress.sublime-build,之后按Ctrl+B就能原地压缩当前文件
关键点:"selector": "source.sql" 必须存在,否则快捷键对 .sql 文件不生效;如果系统 Python 不在 PATH,得写绝对路径,比如 ["/usr/local/bin/python3", "-m", ...]。
所谓“SQL 混淆”在工程实践中基本不可行
有人想把 user_id 替换成 a1、orders 换成 t2 来“保护逻辑”,这在 Sublime 里没法安全做——SQL 解析器无法区分列名、别名、字符串字面量、注释里的伪代码。正则替换必然误伤,例如:
-
WHERE status = 'pending'里的status被替换成s1,但字符串里也有status,也会被改 -
SELECT * FROM user JOIN user_role中两个user含义不同,统一替换就断逻辑 - CTE 或窗口函数里的引用链(
WITH t AS (...) SELECT * FROM t)一替换就无法解析
真要脱敏,应该在导出阶段用数据库自带能力(如 PostgreSQL 的 pg_dump --exclude-table-data),而不是编辑器里搞文本替换。











