SuperAPI AI 工具集

schema-exploration

数据与分析

查看项目

更新于 10-16 02:06

技能介绍

该技能用于在回答 PostgreSQL 数据库的数据问题或编写 SQL 之前,先探索现有数据库结构。它强调从用户问题出发,而不是默认进行全库审计,除非用户明确要求。使用已有的数据库连接;如果没有可用连接,则请求访问权限或基于提供的 schema 文件工作。探索应限定在用户授权的数据库和 schema 内。目录元数据可能暴露敏感名称或源代码,不应不必要地导出。

工作流方面,首先确认当前数据库、服务器版本、角色和范围,使用概览获取小型清单,选择相关 schema,不要假设 public 包含应用。然后选择最有希望的对象,只读取匹配的深入参考:表、分区/继承、外部表、视图、例程、触发器、安全/RLS 或扩展。仅在问题需要时跟进交叉引用。通过注释、定义、键和已知依赖来印证含义;名称是线索而非业务含义的证明。如果数据派生值有帮助,仅在获得对特定列和访问方式的批准后使用。语义仍不明确时询问用户。

如果用户需要 SQL,遵循查询编写流程:先确定连接键和粒度,然后在授权下用普通 EXPLAIN 验证经过审查的只读查询。不要将有效计划误认为业务语义的证明。一旦能够回答就停止。报告具体的 schema 限定对象和证据,区分观察与推断,并说明限制(权限、过时统计、缺失依赖、未知应用逻辑)。

安全与执行方面,优先使用结构目录查询;pg_stats 是数据派生的,也需要批准。未经授权不得更改 schema、数据、角色或会话级设置。永远不要调用发现的函数或过程、刷新物化视图,或对未知查询运行 EXPLAIN ANALYZE。标记为 STABLE 或 IMMUTABLE 的函数并不构成安全保证。如果客户端支持事务,使用只读事务和合理的语句超时进行探索。元数据查询不是运行全表计数或无限制扫描的许可。采样数据前先询问;仅在必要时采样,并设置明确限制,清楚了解表大小和访问控制。

所有参考查询均为纯 PostgreSQL SQL。使用客户端 API 将 $1、$2 等绑定为值。psql 用户可遵循可选的 psql 适配器。永远不要将不受信任的对象名作为原始 SQL 插入;占位符无法在数据查询中替代 SQL 标识符。查询面向 PostgreSQL 18。每个版本敏感部分在适用时注明旧主版本的替代方案。先检查 server_version_num。如果查询因权限或版本差异失败,报告限制而不是猜测。