SQL 格式化
把 SQL 粘贴进来,DevKitLab 会按所选方言重新缩进、对齐子句、规范关键字、函数与数据类型大小写,并在底部状态栏标出解析错误的行列位置。支持 MySQL、PostgreSQL、SQLite、BigQuery、Snowflake、Redshift、Oracle PL/SQL、SQL Server 等十多种方言;可以切换缩进宽度、布尔运算换行方向、语句间空行、运算符紧凑程度和分号位置,也可以一键压缩为单行、复制、上传文件、下载、读取示例。所有处理在浏览器本地完成,查询语句不会上传到服务器。
- 十多种方言可选,包括 MySQL、PostgreSQL、SQLite、BigQuery、Snowflake、Redshift、Oracle、SQL Server、Spark、Trino 等
- 关键字、函数名和数据类型大小写可切换:保持原样、统一大写或统一小写
- 缩进宽度支持 2 空格、4 空格和制表符,并可调整语句间空行、运算符紧凑程度和分号位置
- AND、OR 等布尔运算符可选择换行在前或换行在后,方便适配团队规范
- 一键复制格式化版或紧凑单行版,适合查询调试、日志记录或 ORM 参数
- 支持上传 .sql 文件读取、下载格式化结果,方便整理迁移脚本和数据导出
- 解析失败时显示行列位置和错误描述,定位多语句和长查询中的语法问题
- 完全本地处理:查询语句、表名、库名和真实参数不会发送到服务器
功能简介
这个 SQL 工具按所选方言重新格式化语句,处理子句缩进、关键字大小写、布尔运算换行、语句间空行、运算符紧凑程度,以及压缩为单行的紧凑模式,更适合查询调试、SQL review、迁移整理和 ORM 参数检查。
- 01
多方言整形
内置 MySQL、PostgreSQL、SQLite、MariaDB、TiDB、BigQuery、Snowflake、Redshift、Oracle PL/SQL、SQL Server (Transact-SQL)、Spark、Trino、Hive、ClickHouse、DuckDB、Couchbase N1QL、Db2 等方言,按各自语法关键字进行格式化。
- 02
关键字大小写
关键字以及常见函数名、数据类型可以选择保持原样、统一大写或统一小写,适配团队风格或 SQL review 规范。
- 03
缩进与语句间距
可在 2 空格、4 空格、制表符之间切换,并控制多条语句之间的空行数量。整理迁移脚本、初始化脚本或测试 fixture 时,可以在紧凑和分明之间取舍。
- 04
AND / OR 换行位置
逻辑运算符可以选择换行在前(每行以 AND / OR 开头)或换行在后(保留在上一行末尾),方便对齐团队的 SQL 风格指南。
- 05
紧凑模式
点击复制压缩版会把多行 SQL 压缩成一行,适合粘贴到 ORM 调用、日志字段、命令行或者一些只接受单行查询的工具中。
- 06
错误定位
sql-formatter 解析失败时,会显示具体行列位置和错误描述,帮助你定位漏掉的括号、缺失关键字或不被当前方言识别的语法。
- 07
语句间空行
可以控制多条语句之间的空行数量,整理迁移脚本、初始化脚本或测试 fixture 时更紧凑或更分明。
- 08
文件上传与下载
支持选择本地 .sql / .txt 文件读取,也可以把格式化后的结果下载为 .sql 文件,便于和迁移工具或版本控制工作流配合。
- 09
完全本地处理
解析、格式化、压缩、上传读取和下载都在浏览器本地完成。查询语句、库名、表名、字段名和示例数据不会发送到服务器。
如何使用
常见流程是:选好方言,粘贴 SQL,按需要调整大小写、缩进和换行选项,再复制格式化版或压缩版。
- 01
在底部选择目标方言,例如 MySQL、PostgreSQL、SQLite 或 BigQuery。方言只影响关键字识别,不会改写语义。
- 02
把 SELECT、JOIN、UPDATE、INSERT、迁移脚本或 ORM 生成的 SQL 粘贴进编辑器;也可以点击上传文件读取本地 .sql 文件。
- 03
调整关键字大小写、缩进宽度、语句间空行、运算符紧凑程度和分号位置,让输出贴近团队约定。
- 04
如果团队习惯每行以 AND / OR 开头,把布尔运算符换行位置切到换行在前,否则保持换行在后。
- 05
检查编辑器中的格式化结果。若解析失败,看底部状态栏的行列位置和错误描述,回到原始 SQL 修复语法。
- 06
需要紧凑结果时点击复制压缩版;需要可读结果时点击复制格式化版,或点击下载保存为 .sql 文件。
- 07
如果要进一步微调,直接在编辑器里修改 SQL,工具会按当前选项继续重新格式化。
功能说明
这些功能覆盖了日常处理 SQL 时最常见的几类问题:风格不统一、方言关键字差异、需要紧凑或可读两种形态、需要定位解析错误、需要安全地处理生产 SQL。
- 内置 sql-formatter,覆盖 15 种以上主流方言,每种方言按各自关键字识别。
- 关键字、函数名和数据类型大小写可调整,表名和列名保持原始文本。
- 缩进宽度支持 2 空格、4 空格或制表符,并可控制语句间空行、运算符紧凑程度和分号位置。
- AND / OR 等布尔运算符可以换行在前或换行在后,匹配团队规范。
- 可以一键复制格式化版用于阅读,或复制压缩版用于代码、日志和 CLI。
- 语句间空行可调,迁移脚本和初始化脚本看起来更整洁。
- 上传 .sql 文件后自动按当前选项格式化;不合法语法会在状态栏标出错误位置。
- 可以把格式化结果下载为 .sql 文件,方便提交到版本库或交给数据库工具执行。
- 所有处理都在浏览器本地完成,不会把查询、表名、库名或样本数据上传。
适合哪些场景
这个页面适合所有需要把 SQL 改得更可读、更统一、更便于 review 或更适合粘贴到其他系统的场景。
-
查询调试
把 ORM 打印出来的单行 SQL 或调试日志里的拼接语句粘贴进来,格式化后逐句检查 JOIN、子查询和 WHERE 条件。
-
SQL review
整理 Pull Request 中的 SQL 片段,把团队的关键字大小写、缩进宽度和换行风格统一起来,让 review 时更容易聚焦逻辑。
-
迁移与初始化脚本整理
把 Flyway、Liquibase、Knex、Prisma、SQLAlchemy Alembic 等迁移脚本里的 DDL 与 DML 重新整理,按需要保留语句间空行。
-
BI 与报表查询
清理 Metabase、Superset、Looker、Redash 中的报表 SQL,确保 SELECT、GROUP BY、ORDER BY 的层级一目了然。
-
存储过程与脚本归档
整理 PL/SQL、T-SQL 或 PostgreSQL 函数定义中的语句体,便于提交到代码仓库或文档系统。
-
面试题与教学示例
准备 SQL 练习题、答案和讲义时,把示例查询整理成统一风格,方便课件、博客或 README 中展示。
-
AI Copilot 输出整理
把 AI 助手生成的长 SQL 重新格式化,确保缩进、大小写和关键字位置稳定,再粘贴到查询编辑器中验证。
-
日志 SQL 提取
从应用日志或慢查询日志中复制出的 SQL 通常是单行,先用这里展开成可读版本,再决定要不要进一步调优。
关于 SQL 格式化的几点提醒
格式化只改变可读性,不改变查询语义。下面这些点最容易在跨方言、跨团队时引起误解。
-
格式化不改写语义
工具只调整空白、换行、缩进和关键字大小写,不会改变表名、字段名、运算符和参数。同一条 SQL 在格式化前后执行结果应当一致。
-
方言只影响关键字识别
选择 PostgreSQL 还是 MySQL 主要影响哪些词被视为关键字、如何处理引号和函数名。它不会把 MySQL 语法翻译成 PostgreSQL 语法。
-
关键字大小写是风格,不是要求
大多数数据库不区分 SQL 关键字大小写,但团队通常会约定统一风格。把关键字统一为大写有助于在密集代码中区分关键字和标识符。
-
标识符大小写要小心
部分数据库对带引号的标识符区分大小写(如 PostgreSQL)。如果你手动修改表名或列名大小写,请确认目标数据库的行为,必要时保留原样。
-
不替代 SQL 解析器或 lint
工具基于词法格式化,不做语义校验。是否存在不存在的表、字段类型是否匹配、是否触发慢查询,需要由数据库、ORM 或专门的 SQL lint 工具检查。
-
不会执行 SQL
这里只对文本进行排版,不连接任何数据库,也不会发送查询。哪怕粘贴的是 DROP、DELETE,工具也只是对文本做格式化。
使用建议
SQL 越长、子查询和 CTE 越多,越需要稳定的格式化习惯。下面这些做法能减少 review 噪音和误解。
- 团队内统一一种方言、关键字大小写和缩进风格,避免每次 review 都讨论格式问题。
- 复杂 SELECT 先用稳定缩进展开层级,简单的迁移脚本可以保持较少语句间空行。
- 存储过程、长 CTE 和多层子查询适合 4 空格缩进,能看清嵌套关系。
- 调试 ORM 时,先用工具展开成多行,再判断是否需要新增索引、调整 JOIN 顺序或重写子查询。
- 需要嵌入到代码、日志或 CLI 时,可以用压缩版减少换行;如果 SQL 字符串字面量依赖连续空白,请先检查压缩后的结果。
- 迁移脚本可以保留语句间空行,让每条 DDL / DML 都有视觉缓冲,review 时更容易分块。
- 处理生产 SQL 前先脱敏。工具本身不上传数据,但你复制出去的内容可能会进入工单、聊天、文档或截图。
边界与注意事项
这个工具负责 SQL 的排版、缩进和关键字风格,不替代查询解析器、SQL lint、迁移工具或执行引擎。
- 它不会校验表名、字段名、类型或权限是否真实存在,这些仍然需要数据库本身、DBA 工具或 ORM 的校验能力。
- 它不会改写查询语义。重写 JOIN 顺序、合并子查询、增删字段、加索引、改方言语法,需要交给数据库专家或重构工具。
- 它不是 SQL lint。复杂规则、命名约定和反模式检测请使用 sqlfluff、SonarQube、pgFormatter 等专门工具。
- 它不连接数据库,也不会执行任何 SQL。哪怕粘贴的是 DROP、DELETE 也只是格式化文本。
- 它不会自动在 MySQL 与 PostgreSQL 之间翻译方言差异,例如函数名、引号、limit/offset 语法。方言选择只影响格式化时的关键字识别。
- 所有处理在本地完成,但本地安全仍取决于你的设备、浏览器扩展、屏幕共享和复制目标。
常见问题
这里整理了关于方言、大小写、缩进、压缩、错误定位、隐私等常见问题。
我的 SQL 会上传到服务器吗?
不会。解析、格式化、压缩、上传文件读取、复制和下载都在浏览器标签页内完成。DevKitLab 不会把你的查询语句或表结构发送到服务器。
支持哪些 SQL 方言?
支持 MySQL、PostgreSQL、SQLite、MariaDB、TiDB、BigQuery、Snowflake、Redshift、Oracle PL/SQL、SQL Server (Transact-SQL)、Spark、Trino、Hive、ClickHouse、DuckDB、Couchbase N1QL、IBM Db2 以及通用 SQL,共十几种。
方言选错会怎么样?
方言主要影响哪些词被识别为关键字、字符串和引号风格。一般不会让 SQL 不可读,但少数方言专属语法(例如 BigQuery 的反引号、Postgres 的 dollar-quoted 字符串)在错配方言下可能格式化得不理想,建议匹配实际数据库选择。
为什么我的关键字没有自动大写?
默认大小写策略是保持原样,工具不会主动改写。把关键字策略改为大写或小写,再点击格式化即可看到效果。
会修改我的字符串字面量吗?
格式化模式只调整空白、换行和关键字大小写,不会主动改写引号内的字符串、注释或参数占位符。压缩模式会进一步压缩空白,处理依赖连续空白的字符串时请先检查结果。
压缩模式做了什么?
复制压缩版会把多行 SQL 压成一行,并删除多余空白。它适合常规 ORM 调用、日志字段、命令行或者只支持单行查询的接口;如果查询里的字符串字面量依赖连续空白,请使用格式化版或先确认压缩结果。
解析失败说明 SQL 有问题吗?
通常说明工具的解析器遇到了无法识别的 token,例如方言不匹配、括号不闭合或某些非常规扩展语法。它不等同于数据库的执行错误;可以更换方言、修正语法后再试。
可以处理 PL/SQL 或 T-SQL 的存储过程吗?
可以处理大部分常见的 PL/SQL 与 T-SQL 语句体,但 sql-formatter 并不支持完整的存储过程语义。复杂存储过程建议交给数据库自带的 IDE 或专用工具。
能直接在这里执行 SQL 或连接数据库吗?
不能。这个工具只对 SQL 文本进行排版,不连接任何数据库,也不会发送或执行查询。
能处理很大的 SQL 文件吗?
几百 KB 到几 MB 的脚本通常没问题;超大的迁移文件(几十 MB 或包含大量 INSERT)可能会让浏览器变慢,建议先拆分成单条或分批处理。
更多相关工具
可以继续在数据工具集合里完成查询和数据相关工作流:整理返回的 JSON、查看表格数据,或在多个工具之间快速切换。