基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
SQL 文件审核(analyze sql_review)
更新时间:2026-07-23 16:36:01
本文适用于独立部署 obdiag 的场景。obdiag analyze sql_review 从本地 SQL 文件或目录读取语句(按语句拆分),对每条 SQL 执行与 obdiag analyze sql 相同的内置 SQL Review 规则,输出 HTML 或 JSON 报告。适合离线审核、发布前检查或与流水线集成。
命令执行需要至少指定一次 --files(可多次指定多个路径)。路径可以是单个 .sql 文件,或目录(会递归查找目录下的 SQL 文件)。
数据库连接用于在部分规则或后续扩展中访问元数据(当前实现以规则静态分析为主);未指定 --user 时使用 config.yml 中配置的 sys 租户信息连接。配置说明参见 obdiag 配置。
使用说明
obdiag analyze sql_review [options]
选项说明如下:
| 选项名 | 是否必选 | 数据类型 | 默认值 | 说明 |
|---|---|---|---|---|
| --files | 是 | string | 无 | SQL 文件路径或目录;可重复指定多个 --files。 |
| --user | 否 | string | 默认为空 | 业务租户用户,格式可为 user@tenant、user@tenant#cluster 或 cluster:tenant:user。不指定则使用 config.yml 中配置的 sys 租户。 |
| --password | 否 | string | 空 | 与 --user 配合时的密码。 |
| --host | 否 | string | 默认为空 | 与 --user 同时使用时指定主机;默认取 config.yml 中的 obcluster.db_host。 |
| --port | 否 | string | 默认为空 | 与 --user 同时使用时指定端口;默认取 config.yml 中的 obcluster.db_port。 |
| --tenant_name | 否 | string | 默认为空 | 预留/后续与基于库的审核能力相关;当前可选。 |
| --level | 否 | string | notice | 规则级别过滤,可选值为 critical、warn、notice、ok。 |
| --output | 否 | string | html | 生成的报告格式,可选值为 html 或 json。 |
| --store_dir | 否 | string | 当前目录 | 报告生成后所在目录;每次运行创建 obdiag_sql_review_<时间戳>/,内含 result.html 或 result.json。 |
| -c | 否 | string | ~/.obdiag/config.yml |
配置文件路径。 |
| --inner_config | 否 | string | 默认为空 | obdiag 自用配置。 |
| --config | 否 | string | 默认为空 | 集群配置,格式为 --config key=value,可多次指定。支持指定的配置可参见 obdiag 配置 |
| --config_password | 否 | string | 默认为空 | 使用加密配置文件时的解密密码。具体介绍可参见 配置文件加密。 |
| -h/--help | 否 | - | - | 查看帮助。 |
| -v/--verbose | 否 | - | - | 详细日志。 |
说明
--host / --port 仅在同时指定 --user 时生效;否则将使用集群配置中的地址连接 sys 租户。
SQL 文件格式
- 单个文件内可包含多条语句,语句之间以英文分号(
;)分隔,具体解析以 obdiag 使用的 SQL 切分为准。 - 建议每条语句语义完整,避免将存储过程等复杂块拆断导致解析异常。
规则说明
与 SQL 审计分析与规则审核(analyze sql) 使用同一套 Review 规则(如全表扫描、SELECT *、大 IN、无 WHERE 的更新删除等)。规则实现位于 obdiag 源码 sql/rules/review,随版本更新。
使用示例
审核单个文件
obdiag analyze sql_review --files ./schema/migration.sql
审核多个路径并输出 JSON
obdiag analyze sql_review \
--files ./sql/patch1.sql \
--files ./sql/patches/ \
--output json \
--store_dir ./review_out
使用业务租户连接
obdiag analyze sql_review \
--files ./app/queries.sql \
--user appuser@mytenant \
--password '***'
无配置文件(开箱即用)
obdiag analyze sql_review \
--files ./ddl.sql \
--config db_host=xx.xx.xx.xx \
--config db_port=2881 \
--config tenant_sys.user=root@sys \
--config tenant_sys.password=***
与 analyze sql、sql_syntax 的区别
- 与
obdiag analyze sql的对照见 SQL 审计分析与规则审核 文末表格。 obdiag tool sql_syntax仅对单条 SQL 做 EXPLAIN 校验,不做规则集批量报告,具体可参见 SQL 语法校验工具。