0Pricing
SQL Academy · 课时

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 反馈 — 无需本地设置。

此课程中的所有课时

  1. DBT(数据构建工具)基础
  2. SQLFluff 与代码检查
  3. 测试 SQL:dbt 测试与 Great Expectations
  4. 模式变更的 CI(GitHub Actions)
← 返回 SQL Academy