Tool overview
什么是SQL 格式化器?
SQL 格式化器是一款帮助您美化、格式化并压缩 SQL 查询,统一关键字大小写的开发者工具。
为什么使用SQL 格式化器?
在需要美化、格式化并压缩 SQL 查询,统一关键字大小写时提升可读性与效率,且不会将数据上传到服务器。
核心功能
客户端隐私保护、即时结果与一键复制。美化、格式化并压缩 SQL 查询,统一关键字大小写
使用方法
按照以下步骤使用上方工具并获得准确结果。
- 在左侧面板粘贴 SQL、上传 .sql 文件,或拖放到空状态。
- 从页眉下拉菜单选择方言(13 种:Postgres、Snowflake、BigQuery、Spark、Oracle PL/SQL 等)。
- 勾选 Strip comments 在输出前移除 -- 和 /* */ 注释;Beautify 用于缩进 SQL,Minify 用于单行。
- 将格式化 SQL 复制到迁移、ORM、仓库工作表、嵌入代码字符串或文档。
SQL Formatter 参考
方言列表、工作区控件、Beautify 与 Minify 行为、用例及注释剥离规则。
SQL Formatter 指南 — 从这里开始
本页是在 Dev Tools Suite 中格式化与压缩 SQL 的权威指南。阅读时可使用上方交互式 SQL Formatter,或跳转到下方章节。所有解析与格式化在浏览器内通过 sql-formatter 完成 — 查询、模式名和示例数据从不上传服务器。
SQL Formatter 的作用
SQL Formatter 为人类美化多行 SQL,为传输压缩 SQL。自动将关键字大写(SELECT, FROM, WHERE),应用按子句缩进,并遵循 sql-formatter 库的方言语法 — 与许多 IDE 扩展和 CLI 格式化器使用相同引擎。
你将获得
- 对称双栏:左侧 SQL 输入,右侧格式化或压缩输出
- 13 个方言解析器,分组为核心关系型、云仓库、大数据、企业级
- Beautify 与 Minify 模式,实时自动格式化(防抖)及显式 Process 按钮
- 面板页眉的方言选择器与 Strip comments — 无额外占高选项行
- 大型 SELECT 树的可折叠格式化输出(Beautify)
- 方言解析器无法读取输入时的行列解析错误提示
- 可选 URL 共享:?mode=minify&dialect=postgresql 保留模式与方言
在以下情况使用
- 从日志、BI 或 ORM 粘贴临时 SQL,审查前需要可读缩进
- 在应用代码中嵌入 SQL,需要单行压缩字符串
- 使用 PostgreSQL、Snowflake、BigQuery、Spark 或 Oracle,需要解析器识别方言关键字
- 提交或发布前剥离块注释与行注释
不要期望
- 语义验证 — 格式化成功不代表在服务器上可执行
- 自动查询计划、性能 lint 或模式感知重写
- 完美保留所选方言未覆盖的每个厂商扩展
- 服务端 EXPLAIN 或执行 — 仅为布局与空白工具
工作区布局与页眉控件
控件位于 SQL QUERY 面板页眉,使输入输出编辑器等高。工具栏下无单独选项行。
页眉控件(左侧面板)
| 控件 | 位置 | 作用 |
|---|---|---|
| Dialect dropdown | 页眉,模式标签左侧 | 选择 sql-formatter 语言解析器(按核心、云、大数据、企业分组) |
| Strip comments | 页眉复选框 | 勾选时在 Beautify 或 Minify 前移除 --、/* */ 及方言注释 |
| Beautify / Minify | 页眉模式标签 | Beautify 应用缩进与大写关键字;Minify 压缩空白 |
| Process | 页眉主按钮 | 立即重新格式化(亦可用 Ctrl/Cmd+Enter)。输入或选项变更后约 350ms 自动格式化 |
| Swap | 中央分隔条 | 将输出移到输入并以当前模式重新处理 |
键盘快捷键
- Ctrl/Cmd+Enter — Process
- Ctrl/Cmd+L — 清空工作区
支持的 SQL 方言(13 个解析器)
始终选择与查询运行环境匹配的方言。解析器按方言使用不同关键字列表、函数名和注释规则。通用 ANSI 片段可安全默认 Standard SQL。
支持的方言
| 分组 | 方言 | sql-formatter id | 典型用途 |
|---|---|---|---|
| 核心 | Standard SQL | sql | 通用 ANSI 查询 |
| 核心 | PostgreSQL | postgresql | Postgres、Supabase、Cockroach(近似) |
| 核心 | T-SQL / SQL Server | transactsql | Microsoft SQL Server、Azure SQL |
| 核心 | MySQL / MariaDB | mysql | MySQL、MariaDB(# 注释) |
| 核心 | SQLite | sqlite | SQLite、移动/本地数据库 |
| 云 | Snowflake | snowflake | Snowflake 工作表、Snowflake 上的 dbt |
| 云 | Google BigQuery | bigquery | BigQuery 控制台、定时查询 |
| 云 | Amazon Redshift | redshift | Redshift、Postgres 兼容仓库 SQL |
| 大数据 | Spark SQL | spark | Databricks、Spark SQL 笔记本 |
| 大数据 | Trino / Presto | trino | Trino、Presto、联邦查询引擎 |
| 大数据 | Apache Hive | hive | HiveQL、遗留 Hadoop |
| 企业级 | Oracle PL/SQL | plsql | Oracle Database 过程与 SQL*Plus 脚本 |
| 企业级 | IBM DB2 | db2 | Db2 LUW 与企业仓库 |
不支持 Cassandra CQL — 不在 sql-formatter 方言集中。Cassandra 工作负载请用 CQL 专用格式化器。
Beautify vs Minify — 选择哪种模式
Beautify 与 Minify 共享方言选择器与 Strip comments,但输出形态不同。
模式对比
| Beautify | Minify | |
|---|---|---|
| 输出形态 | 多行、缩进 | 单行(空白压缩) |
| 关键字 | 大写(SELECT, FROM, …) | 除注释移除外保留原大小写 |
| 注释(Strip off) | 格式化前移除 | 仅压缩空白 |
| 注释(Strip on) | 移除 | 移除 |
| 最适合 | 文档、迁移、代码审查 | 嵌入字符串、日志、载荷大小 |
| 输出视图 | 大查询可折叠树 | 纯文本输出 |
示例
输入:select id, name from users where active = 1 — Beautify 产生带 SELECT/FROM/WHERE 大写的缩进行。Strip 关闭的 Minify 产生单行:select id, name from users where active = 1。
分步操作:在浏览器中格式化 SQL
- 从侧栏 Formatters 打开 SQL Formatter。
- 在左侧编辑器粘贴 SQL、从会话工具栏上传 .sql,或拖放到空状态。
- 选择与数据库匹配的方言(如 Snowflake 工作表用 snowflake)。
- 若输入含不需要的 -- 或 /* */ 注释,可选 Strip comments。
- 可读 SQL 选 Beautify,紧凑单行选 Minify。
- 查看右侧输出。修复解析错误横幅 — 编辑后点击关闭。
- 复制、下载或将输出换回输入再处理。
- 共享 ?dialect=bigquery&mode=minify 链接以打开相同设置。
用例:迁移文件与 ORM
Flyway、Liquibase 和 ORM 迁移文件在 SELECT 列表、JOIN 和 WHERE 分到一致行时更易审查。
工作流程
- 将方言设为 postgresql、transactsql、mysql 或 sqlite 以匹配迁移目标。
- 粘贴生成 diff 或 ORM 输出的原始迁移 SQL。
- 若行内注释说明意图,Strip 关闭下 Beautify。
- 开 PR 前将格式化 SQL 复制回迁移文件。
提示
格式化不针对 live 模式验证。外观更改后请在 staging 数据库运行迁移。
用例:Snowflake、BigQuery 与 Spark SQL
分析工程师常从 Snowflake、BigQuery 或 Redshift 控制台复制大小写不一、行被压扁的 SQL。
Snowflake / BigQuery / Redshift
- Beautify 前选 snowflake、bigquery 或 redshift 以正确解析仓库函数。
- 从含 -- 会话笔记的笔记本导出时使用 Strip comments。
- 极宽 SELECT 列表在 Beautify 后用 Expand all / Collapse all。
Spark / Trino / Hive
- Databricks 笔记本与 Spark SQL 管道用 spark。
- 跨目录 Presto 兼容联邦查询用 trino。
- 遗留 HiveQL 用 hive — 解析覆盖遵循 sql-formatter Hive 规则。
用例:为嵌入字符串压缩 SQL
应用代码常将 SQL 存为模板字符串。Minify 减少 JavaScript、Python 或 Go 中单行的字节与转义。
- 将可读 SQL 粘贴到输入面板。
- 若查询含调试笔记,启用 Strip comments。
- 切换到 Minify 模式。
- 将单行输出复制到字符串字面量(注意语言引号转义)。
若源码要可读而运行时要紧凑,文档保留 beautify 版,仅对构建产物 minify。
用例:PR 与代码审查清理
审查前规范化 SQL,使 diff 聚焦逻辑而非空白噪声。
- 同事在工单贴单行 SQL 时,比较两侧都 beautify。
- 用大写关键字作一致风格 — Beautify 自动应用。
- 格式化两版后若需语义 diff,管道到 Text Diff。
Strip comments — 按方言的行为
Strip comments 适用于 Beautify 与 Minify。启用时按已实现方言规则在格式化前移除注释。
注释剥离行为
| 语法 | Strip 开启时处理 |
|---|---|
| -- 行注释 | 是(替换为空格后规范化空白) |
| /* 块注释 */ | 是 |
| MySQL # 注释 | 方言为 mysql 时是 |
| PostgreSQL $$ 美元引号 | 保留 — $$…$$ 内不按注释处理 |
| Redshift 美元引号 | 与 PostgreSQL 方言同样保留 |
Strip 关闭时(Minify)
Minify 仍将空白压成一行但保留注释文本。注释须随查询发布时使用。
修复:解析错误与行提示
解析失败时红色横幅显示带行列的 Parse error。可用时输入编辑器高亮错误行。
常见修复
- 方言错误 — 切换到实际引擎(如 Oracle 包用 plsql,非 Standard SQL)。
- 未闭合字符串或括号 — 在报告行附近平衡引号与括号。
- 尾逗号或未完成子句 — 先完成 SELECT 列表与 CTE。
- 粘贴了非 SQL — 去掉查询外的 shell 或 JSON 包装。
- 通用模式下的方言语法 — 试厂商方言或简化不支持的扩展。
有效查询仍失败时,sql-formatter 可能未覆盖该语法变体。向上游报告或手动格式化简化子集。
隐私 — 查询留在浏览器中
SQL Formatter 100% 在浏览器运行。sql-formatter 库动态加载;在主线程 JavaScript 中格式化。
- 查询文本不发送到 Dev Tools Suite 服务器
- 输入、输出、方言与 Strip comments 偏好可保存在设备 localStorage
- URL 参数(?dialect=、?mode=)仅反映设置 — 不含 SQL 正文
- 处理生产数据或 PII 后清空工作区(Ctrl/Cmd+L)
SQL 格式化最佳实践
- Beautify 前匹配执行环境方言 — 格式化成功 ≠ 运行成功
- 人类用 Beautify,机器用 Minify
- 注释记录业务规则时 Strip 关闭;导出与嵌入时开启
- 含美元引号或特殊字面量的 minify 输出在 staging 验证
- 大脚本用会话历史与文件上传,勿粘贴到会改引号的聊天应用
- 比较同一报表查询两版格式化结果时结合 Text Diff
常见问题
关于常见调试问题和数据隐私的可展开解答。
相关工具
探索可与此工具配合使用的其他相关实用工具。
官方文档与参考
本工具的权威规范与平台文档。