SQL Formatter

合并请求里满屏 select 与 SELECT 抖动时,统一关键字大小写到底能省多少无效评审时间?

数仓与数据应用在 Git 里协作,同一逻辑 MR 却出现整文件大小写抖动,审阅者只能逐行点「忽略空白」仍不放心。大家搜「sql 关键字 大写」「关键字 统一 小写」「sqlfluff 风格」是为了先把噪音从 diff 里剥离,让评审专注 JOIN 条件与聚合口径。对要写《数据开发规范》、要给外包模板、要把 SQL 贴进审计附件的白领,大小写统一是「最低成本的团队默契」:新人不用猜「到底跟谁的习惯」。仍要与 sqlfluff 或仓库 pre-commit 规则版本对齐,避免网页统一一版、CI 又打回另一版;引号包裹的标识符与字符串字面量绝不能被误改。对上市披露与内控抽样,附「关键字统一前后哈希」能证明未触碰业务逻辑,只清理风格噪音;新人培训材料也能一次定稿,不用每次口头强调「请跟数仓习惯」。跨地域外包与新人 onboarding 时,附关键字策略一页纸能减少每次合并的风格争吵;内审抽样也能用统一稿面对照历史版本,证明只有风格无业务偷改。

如何在合并前统一 SQL 关键字大小写并与 CI 规则集对齐

  1. 在团队规范写明默认策略:关键字大写且标识符小写、或全小写关键字;粘贴前备份原文哈希,避免与历史分支比对时出现「假全文件变更」错觉。
  2. 执行统一后抽样检查:双引号标识符、方括号名、反引号名是否被误伤;字符串与注释中的关键字子串是否应保持原样,必要时用最小样例回归。
  3. 将结果与 CI 中同一规则版本跑出的结果 diff,一致后再提交 MR;把规则文件检入 Git 并在数据手册写清例外条款,避免个人临时手改。

关键字大小写常见问题

统一关键字大写后,带双引号的混合大小写表名被改成全大写导致对象找不到,这是工具 bug 还是我们本来就不该依赖未加引号的折叠行为?
引号标识符在多数引擎里大小写敏感,关键字统一工具必须跳过引号内文本;若发生改写应视为阻断缺陷并回滚。应在规范里禁止「靠折叠找表」的写法,强制使用一致大小写建对象。
团队一半人坚持 Oracle 传统全大写,一半人坚持现代全小写关键字,投票僵持时有没有可落地的折中策略写进规范?
可采用「关键字大写、标识符与别名小写」这类行业常见折中,并在 sqlfluff 配置锁定;遗留脚本设迁移窗口分批改。折中应写成 ADR 并由数据平台组签字,而不是每次 MR 现场吵架。
字符串字面量里出现了 select 子串用于拼接动态 SQL,统一大小写会不会把它也改掉从而引发注入或逻辑错误?
合规则实现必须只改关键字 token,不触碰字符串与注释;若不确定,应用最小单测与 golden file 验证。动态 SQL 拼接场景应推动改为参数化或白名单映射,而不是靠大小写统一救命。
我想在网页一键统一后直接把结果 push 到主分支,DBA 说没经过他们的格式化流水线,这类流程冲突该如何写进变更闸门?
网页结果只能作个人预检,主分支应以 CI 与 DBA 认可的格式化命令为准;可在 pre-push hook 调用同一二进制。把「禁止手工 push 全文件大小写抖动」写进合并策略,减少夜间回滚。
统一大小写后 git blame 行作者全部变成格式化机器人,审计追问谁改的时我们该如何保留可追溯性,能否单靠提交信息链接业务合并请求就满足抽样要求?
应使用「格式化单独提交」与仓库中的机器人账号,并在提交信息链接业务变更合并请求;业务逻辑与风格提交必须拆分。审计要看的是业务合并指纹,而不是排版机器人提交。
More versions