SQL 格式化与压缩
SQL 格式化 - 常见问题
MySQL、PostgreSQL、SQLite、SQL Server 和 Oracle 都可以,因为这个工具只需要认出字符串、注释、带引号的名字和子句关键字——这些是各方言共有的部分。反引号、双引号和方括号一律当作标识符引号,所以你不必告诉它这条查询来自哪种数据库。
最常用的格式化工具
全部时间
新
Markdown 编辑器
编写 Markdown 并并排查看渲染结果。支持标题、列表、表格、代码块和链接;可复制 HTML 或下载 .md 与 .html 文件。在浏览器中运行。
这个工具能做什么
你需要看懂的那条查询,往往不是你写的。它来自一份日志、一个 ORM、同事发来的一条消息:一整行,四个 join,还有一个找不到尽头的 where。这个页面把它拆到各行,让结构显出来;等到别的东西要读它时,再收回一行。
使用方法
- 1 粘贴查询——一条语句或者整个脚本都行。
- 2 选好缩进,然后点格式化或压缩。
- 3 文字会在同一个框里变化——复制它,或者点撤销。
单行注释,在没有行的地方就是隐患
「--」注释一直管到行尾。压缩会去掉换行,所以留在原地的注释会把后面的一切都吞掉:查询照样能跑,只是悄悄地跑到一半就停了。所以这里的压缩会把行注释整个删掉——也所以字符串里的「--」原封不动,因为在那里它是数据,不是注释。
引号,以及成双的引号
在 SQL 里,字符串内部的引号靠写两遍来转义:'O''Brien'。在第二个引号处就把字符串关掉的工具,会把名字的后半截当成代码读,从那以后它找到的每个关键字都是幻觉。带引号的标识符同理——`order`、"group"、[limit] 都是名字,名字里的关键字不是关键字。
它绝不改写你的查询
关键字不会被改成大写,括号不会被简化,别名不会被改名。动的只有空白。这一点很要紧,因为格式化后的查询通常要回到一个团队会评审的文件里:满屏大小写变更的 diff,会把真正改动的那一行藏起来;而小写关键字是团队风格,不是错误。
格式化不等于检查
这个页面从不连接数据库,所以它不知道某张表存不存在、你的 join 对不对、这条查询会不会慢。它读的是文本,动的是空白。它真正给你的是形状——而一条你能看清形状的查询,才是你能推敲的查询。
相关开发工具
JSON 格式化
在浏览器里格式化、压缩并校验 JSON。出错位置精确到行列,可折叠的树状图展示结构。
HTML 格式化
把乱糟糟的 HTML 缩进成能读的样子,或者压掉多余部分让它变小。片段也能处理,而且绝不把你的标记改写成别的东西。
CSS 压缩
去掉注释和空白来压缩 CSS,或者重新展开成整齐的缩进。calc() 中的空格、字符串和许可证注释都原样保留。
XML 格式化
把乱糟糟的 XML 缩进成能读的样子,或者压小。支持 RSS、CDATA 和命名空间,绝不改写你的文档。
JavaScript 压缩
用 Terser 压缩 JavaScript——构建工具用的就是它。它解析代码而不是猜,行为不变。什么都不会上传。