SQLfmt:一键美化您的SQL代码
1. 项目介绍
SQLfmt 是一个专为数据库查询语言(特别是支持主流方言如 PostgreSQL, MySQL, Snowflake, BigQuery, 和 Redshift 的 SELECT 语句)设计的自动格式化工具。该项目由 Shandy 提供,致力于通过统一的代码风格提升团队协作效率。除了处理纯 SQL 文件,SQLfmt 还能够优雅地格式化包含 Jinja 模板的 dbt 项目,并对一些基础的 DDL 和 DML 语句进行轻度处理。对于诸如 T-SQL(SQL Server)这样的特定方言,其支持程度还在不断成熟中。SQLfmt 强烈建议在版本控制系统(如 Git)下使用,以便于跟踪和管理格式化所带来的变更。
2. 快速启动
安装 SQLfmt
首先,确保你的环境中安装了 pipx,然后可以轻松地安装 SQLfmt:
pipx install shandy-sqlfmt
如果你想同时安装用于 Jinja 模板格式化的额外组件(包括 Black),可以使用:
pipx install shandy-sqlfmt[jinjafmt]
格式化文件
格式化当前目录及子目录下的所有 SQL 文件非常简单,只需执行:
sqlfmt
若想检查文件是否已按 SQLfmt 的规则格式化,而不实际修改文件,可以使用:
sqlfmt --check
查看变化但不保存,可加上 --diff 选项:
sqlfmt --diff
3. 应用案例和最佳实践
在团队开发环境下,SQLfmt 推动了一种更高效的协作方式。它消除了代码审查中关于风格的讨论,加快了开发流程。例如,将 SQLfmt 纳入到 CI/CD 流程中,可以保证每次提交的 SQL 代码都遵循相同的格式规范。此外,在 dbt 项目中应用 SQLfmt,结合其对 Jinja 支持的能力,确保模板渲染前的代码保持整洁一致,从而提高项目的可维护性和新手的上手速度。
最佳实践包括:
- 在首次运行 SQLfmt 前,先对代码库做一次提交。
- 使用预提交钩子(
pre-commit)自动化格式化过程。 - 调整
--line-length选项以适应团队的编码习惯。
4. 典型生态项目集成
SQLfmt 不仅限于命令行操作,它还很好地融入开发者常用的生态系统中:
- pre-commit: 可以配置为预提交钩子,确保每次提交的代码都是格式化的。
- SQLFluff: 尽管不是直接集成,两者结合使用可以实现代码质量和格式的双重保障。
- VSCode: 通过插件支持,可以直接在编辑器内完成格式化操作。
- GitHub Actions: 可以设置自动格式化任务,在代码合并前自动执行。
通过以上集成,SQLfmt 成为了数据工程和数据库脚本维护不可或缺的工具,简化了代码管理流程,提升了团队的工作效率。
通过这个简要的指南,希望您能迅速掌握 SQLfmt 的应用并充分利用它来优化您的SQL代码写作和团队协作流程。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



