SQLFluff 与代码检查
使用 SQLFluff 检查 SQL,强制执行团队编码风格,并自动修正常见的格式问题
SQLFluff 与代码检查 是 CoddyKit 上的免费 SQL Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 SQL Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 SQL Academy 课程共包含 4 节课。
为什么要检查 SQL?
SQL 通常由手动编写,很容易出现格式不一致。代码检查会自动强制执行统一的风格:
- 关键字使用小写还是 UPPER
- 逗号放在行尾还是行首
- 表和列的命名约定
- 缩进
- 反模式(SELECT *、不明确的连接等)
SQLFluff:事实上的代码检查工具
它是开源的、能够识别方言,支持多种 SQL 变体,并且与 dbt 配合良好:
pip install sqlfluff
sqlfluff lint models/
sqlfluff fix models/ # auto-fix where safe配置 SQLFluff
一个 .sqlfluff 配置:
[sqlfluff]
dialect = postgres
templater = dbt
max_line_length = 120
[sqlfluff:rules:capitalisation.keywords]
capitalisation_policy = upper
[sqlfluff:rules:capitalisation.identifiers]
extended_capitalisation_policy = lower标准规则
SQLFluff 有 50 多条规则,涵盖命名、布局、大小写、结构和歧义。您可以按规则禁用:
[sqlfluff]
exclude_rules = AM05, ST05内联禁用
跳过对单行的检查:
SELECT * -- noqa: AM04
FROM users;与 dbt 集成
SQLFluff 理解 Jinja 和 ref():
sqlfluff lint --templater dbt models/提交前钩子
在每次提交前运行 SQLFluff:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/sqlfluff/sqlfluff
rev: 3.0.0
hooks:
- id: sqlfluff-lint
- id: sqlfluff-fix在 CI 中
使用代码检查错误阻止拉取请求:
# GitHub Actions
- name: SQLFluff
run: |
pip install sqlfluff
sqlfluff lint models/需要检查的反模式
- L044/AM04 — 避免使用 SELECT *
- AM05 — 避免隐式 JOIN(逗号)
- ST05 — 避免在 FROM 中使用子查询(使用 CTE)
- L010 — 大小写不一致
格式化工具与代码检查工具
SQLFluff 两者都能做到——执行检查 AND 自动格式化:
sqlfluff format models/ # newer: dedicated format command
sqlfluff fix models/ # alias for format + safe rule fixes其他工具
- pg_format — 格式化 SQL(专注于 PostgreSQL)
- SQLFluff 使用最广泛;可与 dbt 集成
- 编辑器中的保存时格式化(VS Code、JetBrains)
回顾
代码检查消除了风格争论,还能发现真正的错误。
- 使用 SQLFluff 进行代码检查和格式化
- .sqlfluff 用于配置规则
- 在提交前检查和 CI 中运行
- 与 dbt 结合,完成端到端 SQL 工作流
快速检查
哪种工具是 SQL 代码检查的开源标准(并且支持 dbt 模板)?
常见问题解答
「SQLFluff 与代码检查」课时是免费的吗?
是的 — 「SQLFluff 与代码检查」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 SQL Academy 课程的其余内容,请升级到 CoddyKit PRO。 SQL Academy 课程共包含 4 节课。
「SQLFluff 与代码检查」这节课中我会学到什么?
使用 SQLFluff 检查 SQL,强制执行团队编码风格,并自动修正常见的格式问题 你通过在浏览器中直接运行的动手代码来练习 SQL Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 SQL Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 SQL Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「SQLFluff 与代码检查」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 SQL Academy 课中编写并运行代码吗?
能。每节 SQL Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。