跳到正文

SQL 格式化

SQL Formatter

按可配置的关键字大小写、缩进和逗号位置格式化 SQL,覆盖主流方言。

把一条 SQL 查询排到能读——关键字对齐,子句各占一行,join 缩进在它挂靠的表下面。它认识五种方言,因为方言之间的差别主要在于字符串、标识符和注释怎么引用,弄错这一点正是格式化器把查询弄坏的方式。

🔒 完全在你的浏览器里运行sqlformatdatabasebeautify
方言

ANSI 引用:标识符用双引号,字符串里的引号写两遍。

关键字
缩进
逗号
行宽

SQL 输入

拖入 .sql 文件

在这个标签页里读取,不上传。

格式化结果

输入

253 B

输出

0 B

语句数

0

记号保住

是

这只负责排版 SQL,不做校验。缺了 FROM 的查询照样会被排得很整齐,然后被数据库原样拒绝。

怎么用

  1. 先选方言

    MySQL 的反引号、PostgreSQL 的美元引用、SQL Server 的方括号——每一种都改变什么算标识符、什么算字符串。「标准」是 ANSI 的读法,适合任何要求可移植的东西。

  2. 设置团队风格

    关键字大小写、缩进宽度、逗号在行首还是行尾,以及 select 列表在多宽处折行。行首逗号看着别扭,直到你对一个列清单做过一次 git blame。

  3. 看「记号已保留」

    每次运行后输出会重新分词并和输入比较。如果它说没有,说明格式化器读错了什么——几乎总是方言不对——你应该用你的输入,而不是它的输出。

常见问题

它会校验我的查询吗?

不会。它只排版 SQL;它不知道你的 schema,也不解析含义。一条缺了 `FROM` 子句的查询会被整整齐齐地格式化,然后照样被你的数据库拒绝。

为什么我的 `--` 注释变成了 `/* */`?

只在压缩时会这样。`--` 注释一直延伸到行尾,把查询放到一行上就会把它后面的一切都注释掉。页面会统计转换了多少条,所以这个改动不是无声的。

这里的「未终止的字符串」是什么意思?

一个始终没有闭合的引号,通常是因为方言选错了——「标准」模式下的反引号,或 MySQL 模式下的 `$$` 块。它之后的一切都被读成那个字符串的一部分,这就是输出剩下部分看起来乱掉的原因。

能粘一整个迁移文件吗?

能——语句按分号拆开,并显示条数。格式化在 worker 里运行,大文件不会锁住页面,不过特别长的会花一会儿。

可以从这些接进来

接下来

这些工具吃得下当前工具的产出,结果可以直接送过去。