5分钟搞定 SQL 格式化:从一行乱码到整齐排版只要 3 行代码
5分钟搞定 SQL 格式化从一行乱码到整齐排版只要 3 行代码【免费下载链接】sql-formatterA whitespace formatter for different query languages项目地址: https://gitcode.com/gh_mirrors/sql/sql-formatterSQL Formatter 是一个用 JavaScript 写的 SQL 格式化工具库专门把挤成一团的 SQL 语句重新排版成缩进整齐、关键字统一的样子。看完这篇你从安装到输出第一份格式化好的 SQL整个过程不会超过 5 分钟。一段 SQL 挤在一行里没人敢碰想象一下这个场景同事把一段线上查询贴到群里500 个字符全挤在一行里。你眯着眼从前往后数括号数到一半发现 WHERE 子句到底跟不跟后面那个 OR 连在一起根本看不出来。更烦的是你刚把它拆开换好行另一句查询又是另一种风格——关键字有的全大写、有的驼峰缩进有人用空格有人用 Tab。这种格式各写各的在团队里太常见了。手动整理费时费力而且下次又乱回去。SQL 格式化要解决的就是这个麻烦交给工具统一排版人只负责看逻辑。核心能力它替你干了哪些活18 种 SQL 方言开箱即用解析不靠猜它不是简单的正则替换内部自带一套 SQL 解析器目前支持 MySQL、PostgreSQL、Transact-SQL、Snowflake、BigQuery、Spark、SQLite、Trino 等 18 种方言。这意味着select [col] from tbl这种 T-SQL 特有写法、BigQuery 的反引号语法都能被正确识别再排版而不是排完把语义弄坏。用哪套方言靠language参数指定比如{ language: mysql }。各方言支持哪些语法可以在仓库的 docs/language.md 里查到。关键字、函数名、标识符大小写统一改一处全库生效团队里关键字到底写select还是SELECT的争论可以终结了。三个参数各管一摊keywordCase管关键字SELECT、FROM、WHERE 这些functionCase管函数名COUNT、COALESCE 这些identifierCase管表和列名注意这个是实验性功能设一次整份脚本都按同一套风格走评审 SQL 时不用再纠结大小写这种细节。缩进与换行宽度可调长语句不再横着拖满屏tabWidth控制缩进几格useTabs决定用 Tab 还是空格expressionWidth控制括号里的表达式多长之后才折行linesBetweenQueries控制多条语句之间空几行。一条又长又绕的 JOIN 排完会变成层次分明的多层结构顺着缩进就能读出嵌套关系。局部禁用格式化排不了的片段不会拖垮整份脚本个别 SQL 你不想让它被动或者它恰好触发了工具的边界问题可以这样包起来/* sql-formatter-disable */ SELECT * FROM tbl1; /* sql-formatter-enable */这两行注释之间的内容工具连解析都不会碰原样保留。相当于给格式化器按了个这段跳过的暂停键。占位符替换格式化顺便把参数也填进去预处理语句里的?留着不直观用params传一组值格式化时会被替换进去paramTypes还能让模板变量比如{col1}这种自造语法被当成参数识别。排完你看到的就是可以直接贴去执行的完整 SQL而不是满屏问号。从安装到跑通最短上手路径装依赖npm install sql-formatteryarn 用户yarn add sql-formatter装完得到format函数和一个命令行工具。写第一行代码import { format } from sql-formatter; format(select * from t, { language: sql, keywordCase: upper, tabWidth: 2 });得到SELECT\n *\nFROM\n t这样按行拆好、缩进整齐的 SQL——工具就通了。终端里试试 CLInpx sql-formatter input.sql -l mysql -o out.sql不用写一行 JS直接文件进、文件出。沉淀团队配置在项目里放一个.sql-formatter.json内容如{ language: mysql, tabWidth: 2 }CLI 会自动向上查找并应用全组从此一个标准。进阶与避坑少踩这几个坑报 Parse error九成是忘了指定方言。不同数据库的语法差异不小language是最常被漏掉的参数拿不准就先给sql再按报错逐步收窄。SQL 里混了模板语法排不动用paramTypes的正则把模板片段声明成参数类型即可详见 docs/paramTypes.md省得为这点事去改业务代码。别指望它格式化存储过程。项目明确不支持存储过程和自定义分隔符这类语句建议用sql-formatter-disable注释包起来绕开。格式细节想再抠一抠每个配置项都有单独文档docs/ 目录布局引擎实现在 src/formatter/ 里翻源码也能看到折行是怎么算出来的。让重复的格式劳动归零、把注意力留给 SQL 逻辑本身——装上 SQL Formatter今天提交的第一份 SQL 就可以从一行乱码变成整齐排版。【免费下载链接】sql-formatterA whitespace formatter for different query languages项目地址: https://gitcode.com/gh_mirrors/sql/sql-formatter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考