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
常见問題
關于常见调试問題和数據私隱的可展開解答。
相關工具
探索可与此工具配合使用的其他相關实用工具。
官方文件与参考
本工具的权威规范与平台文件。