sqlfmt 使用教程
项目介绍
sqlfmt 是一个用于 dbt SQL 的自动格式化工具,由 PyWebIO 提供支持。它旨在对 SQL 文件进行格式化,使其代码风格统一,便于团队协作和代码审查。sqlfmt 支持多种 SQL 方言,如 PostgresSQL、MySQL、Snowflake、BQ 和 Redshift,并且能够处理包含 Jinja 模板的 dbt 项目。
项目快速启动
安装
推荐使用 pipx 安装 sqlfmt,因为它会自动创建虚拟环境:
pipx install shandy-sqlfmt
如果需要同时安装 Python 代码格式化工具 black,可以使用以下命令:
pipx install shandy-sqlfmt[jinjafmt]
基本使用
在当前工作目录及其所有子目录中格式化所有 SQL 和 SQL Jinja 文件:
sqlfmt
检查文件是否已正确格式化,如果未格式化则退出并返回代码 1:
sqlfmt --check
打印格式化前后的差异,但不更新磁盘上的文件:
sqlfmt --diff
应用案例和最佳实践
最佳实践
- 版本控制:强烈建议在版本控制系统(如 git)中运行 sqlfmt,以便轻松回滚任何由 sqlfmt 引起的更改。
- 初始运行:在首次运行 sqlfmt 之前,确保进行一次提交。
应用案例
- 格式化 SELECT 语句:使用 sqlfmt 格式化主要方言的 SELECT 语句,如 PostgresSQL、MySQL 等。
- 格式化 dbt 项目:使用 sqlfmt 格式化包含 Jinja 和一些基本 DDL/DML(如 grants、create function 等)的 dbt 项目。
典型生态项目
sqlfmt 可以与以下工具和平台集成:
- dbt:直接支持 dbt 项目格式化。
- pre-commit:作为 pre-commit 钩子使用。
- SQLFluff:与 SQLFluff 一起使用以增强 SQL 代码质量。
- VSCode:通过 VSCode 插件进行集成。
- GitHub Actions:在 GitHub Actions 中使用 sqlfmt 进行 CI/CD。
通过这些集成,sqlfmt 能够更好地融入开发者的日常工作流程,提高代码质量和团队协作效率。