sqlfmt 使用教程
1. 项目介绍
sqlfmt
是一个用于格式化 dbt SQL 文件的自动格式化工具。它类似于 black
、gofmt
和 rustfmt
,但专门用于 SQL 文件。sqlfmt
旨在提高团队协作效率,通过自动格式化 SQL 文件,减少代码审查中关于代码风格的讨论。它处理速度快,支持 Jinja 模板,并且可以轻松集成到现有的工作流程中,如 dbt、pre-commit、SQLFluff、VSCode 和 GitHub Actions。
2. 项目快速启动
安装
推荐使用 pipx
安装 sqlfmt
,因为它会自动将 sqlfmt
安装到一个虚拟环境中:
pipx install shandy-sqlfmt
如果你想同时安装 black
来格式化 Jinja 代码,可以使用以下命令:
pipx install shandy-sqlfmt[jinjafmt]
使用
安装完成后,你可以通过以下命令来格式化当前目录及其子目录中的所有 .sql
和 .sql.jinja
文件:
sqlfmt .
如果你想检查文件是否已经格式化,可以使用 --check
选项:
sqlfmt --check .
如果你想查看 sqlfmt
将进行的更改而不实际修改文件,可以使用 --diff
选项:
sqlfmt --diff .
3. 应用案例和最佳实践
在 dbt 项目中使用
sqlfmt
是为 dbt 项目设计的,因此在使用时只需要进行最少的配置。建议排除 target
和 dbt_packages
目录,以避免格式化这些目录中的文件。你可以在命令行中使用 --exclude
选项,或者在 pyproject.toml
文件中进行配置:
[tool.sqlfmt]
exclude=["target/**/*", "dbt_packages/**/*"]
与 pre-commit 集成
你可以将 sqlfmt
集成到 pre-commit
钩子中,以确保每次提交时自动格式化 SQL 文件。在 .pre-commit-config.yaml
文件中添加以下配置:
repos:
- repo: https://github.com/tconbeer/sqlfmt
rev: v0.10.0
hooks:
- id: sqlfmt
在 VSCode 中使用
你可以在 VSCode 中配置 sqlfmt
作为格式化工具。首先,安装 sqlfmt
并确保它在你的系统路径中。然后,在 VSCode 的设置中添加以下配置:
{
"sqlfmt.executable": "sqlfmt",
"sqlfmt.lineLength": 88
}
4. 典型生态项目
dbt
sqlfmt
是为 dbt 项目设计的,因此与 dbt 的集成非常紧密。它可以自动格式化 dbt 项目中的 SQL 文件,包括 Jinja 模板。
SQLFluff
虽然 sqlfmt
不是一个 linter,但你可以将它与 SQLFluff 结合使用,以获得更全面的 SQL 代码质量检查。
pre-commit
sqlfmt
可以与 pre-commit
集成,以确保每次提交时自动格式化 SQL 文件,从而保持代码库的一致性。
VSCode
通过在 VSCode 中配置 sqlfmt
,你可以在编辑 SQL 文件时自动应用格式化,提高开发效率。
通过以上步骤,你可以快速上手并充分利用 sqlfmt
来提高你的 SQL 代码质量和团队协作效率。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考