📦 PostgreSQL Skill — 数据库管理

v1.0.0

自然语言驱动,一键完成 PostgreSQL 复杂查询、性能分析、JSON/全文搜索及备份恢复,开发者与 DBA 的万能数据库助手。

0· 222·1 当前·1 累计
ryanlee-gemini 头像by @ryanlee-gemini·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/23
0
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能无代码指令与包元数据符合 PostgreSQL 助手定位:需安装 psql 客户端并提供连接信息,属预期行为;但存在元数据小不一致及凭证安全提示。
评估建议
技能功能与描述一致:提供 Postgres 查询、备份/恢复命令并推荐标准客户端。使用前请:1) 核实源码(package.json 指向 GitHub,请检查仓库)。2) 避免长期导出 PGPASSWORD,改用 .pgpass、安全 URI 或机密管理器,并赋予最小权限。3) 仅在你控制的机器上运行 sudo/apt 或 brew。4) 先在非生产库测试生成语句,尤其是破坏性命令。5) 注意元数据缺失:SKILL.md 声明所需环境变量,但注册元数据未列出,代理需凭据才能运行。若接受上述风险,技能与其目的相符。...
详细分析 ▾
用途与能力
名称/描述与内容一致:SKILL.md 提供 SQL 示例、备份/恢复建议、性能查询、JSON/FTS 指导;package.json 声明依赖 PostgreSQL 客户端二进制(psql、pg_dump、pg_restore)并含安装块,与 Postgres 管理技能相符。注:注册元数据报告“无所需二进制”与“无主页”,但 package.json 包含 requires/install 及主页/仓库,属元数据不一致而非功能失配。
指令范围
SKILL.md 聚焦数据库任务:安装客户端、配置连接变量、SQL 示例、EXPLAIN 用法、备份。指令设置环境变量(PGHOST/PGPORT/PGUSER/PGPASSWORD/PGDATABASE)并运行系统安装命令(apt/brew),未要求读取无关文件或外泄数据。(小提示:部分 SQL 示例使用 QUALIFY,非标准 PostgreSQL 语法,属正确性问题而非安全。)
安装机制
未捆绑可执行代码,但 package.json 的 openclaw.install 部分运行标准系统包管理器(apt、brew)安装 PostgreSQL 客户端,来源可信,无任意下载或解压步骤。apt 安装可能需 sudo,系统包安装需相应权限。
凭证需求
技能正常需要数据库连接信息(PGHOST/PGPORT/PGUSER/PGPASSWORD/PGDATABASE)才能运行,但注册元数据未声明所需环境变量或主凭证,而 SKILL.md 明确指示导出 PGPASSWORD 及其他 PG_* 变量。此缺失为元数据遗漏——功能上环境变量必要,但将敏感口令放入环境变量存在安全暴露风险(进程列表/shell 历史)。
持久化与权限
技能仅含指令,不要求常驻、特殊系统路径或 always:true。仅包含可选客户端工具系统安装命令,范围有限且属常规。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/23

🎉 首发版本! 主要功能: • 🔍 智能查询 - 自然语言描述,自动生成 SQL • 📊 高级分析 - 窗口函数、CTE、复杂聚合 • 📝 JSON 操作 - JSONB 查询、更新、索引 • 🔎 全文搜索 - PostgreSQL 强大的全文搜索能力 • ⚡ 性能分析 - EXPLAIN ANALYZE、索引优化 • 💾 备份恢复 - pg_dump/pg_restore 完整方案 适合人群:开发者、数据分析师、DBA

无害

安装命令

点击复制
官方npx clawhub@latest install postgres-skill
镜像加速npx clawhub@latest install postgres-skill --registry https://cn.longxiaskill.com

技能文档

# PostgreSQL 技能 - 高级数据库管理 通过自然语言,轻松管理 PostgreSQL,利用其强大特性! --- ## 🎯 功能特点 ### 核心能力 - 🔍 智能查询 - 自然语言描述,自动生成 SQL - 📊 高级分析 - 窗口函数、CTE、复杂聚合 - 📝 JSON 操作 - JSONB 查询、更新、索引 - 🔎 全文搜索 - PostgreSQL 强大的全文搜索能力 - ⚡ 性能分析 - EXPLAIN ANALYZE、索引优化 - 💾 备份恢复 - pg_dump/pg_restore 完整方案 --- ## 📋 使用场景 ### 查询场景 - "查询每个部门薪资前三的员工"(窗口函数) - "找出重复的订单号"(HAVING 子句) - "统计用户留存率"(复杂分析查询) ### JSON 数据场景 - "查询 JSON 字段中特定路径的值" - "更新 JSONB 数据中的嵌套字段" - "为 JSON 字段创建 GIN 索引" ### 全文搜索场景 - "搜索包含特定关键词的文章" - "按相关度排序搜索结果" - "中文全文搜索配置" --- ## 🔧 前置条件 ### 1. 安装 PostgreSQL 客户端 Ubuntu/Debian: ``bash sudo apt update sudo apt install postgresql-client ` macOS: `bash brew install libpq ` Windows: 下载并安装 PostgreSQL 官方客户端工具 ### 2. 配置数据库连接 使用环境变量: `bash export PGHOST=localhost export PGPORT=5432 export PGUSER=your_username export PGPASSWORD=your_password export PGDATABASE=your_database ` 或使用连接字符串: ` postgresql://username:password@localhost:5432/database ` --- ## 💻 常用操作 ### 高级查询示例 #### 窗口函数 - 每部门薪资前3的员工 `sql SELECT department, name, salary, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as rank FROM employees QUALIFY rank <= 3; ` #### CTE (Common Table Expression) `sql WITH monthly_sales AS ( SELECT DATE_TRUNC('month', order_date) as month, SUM(amount) as total FROM orders GROUP BY DATE_TRUNC('month', order_date) ) SELECT month, total, LAG(total) OVER (ORDER BY month) as prev_month, ROUND( (total - LAG(total) OVER (ORDER BY month))::numeric / LAG(total) OVER (ORDER BY month) 100, 2 ) as growth_pct FROM monthly_sales; ` --- ### JSONB 操作 #### 查询 JSONB 字段 `sql -- 查询 JSON 中的嵌套值 SELECT id, metadata->>'user_id' as user_id, metadata->'preferences'->>'theme' as theme FROM users WHERE metadata->>'status' = 'active'; ` #### 更新 JSONB 字段 `sql UPDATE users SET metadata = jsonb_set( metadata, '{preferences,theme}', '"dark"' ) WHERE id = 123; ` #### 为 JSONB 创建索引 `sql -- GIN 索引支持高效的 JSONB 查询 CREATE INDEX idx_users_metadata_gin ON users USING gin (metadata jsonb_path_ops); ` --- ### 全文搜索 #### 配置中文全文搜索 `sql -- 创建全文搜索索引 CREATE INDEX idx_articles_content_fts ON articles USING gin(to_tsvector('chinese', content)); -- 全文搜索 SELECT title, ts_headline('chinese', content, query) as snippet FROM articles, to_tsquery('chinese', '人工智能') as query WHERE to_tsvector('chinese', content) @@ query ORDER BY ts_rank(to_tsvector('chinese', content), query) DESC; ` --- ### 性能分析 #### EXPLAIN ANALYZE 查询计划 `sql EXPLAIN (ANALYZE, BUFFERS, VERBOSE) SELECT FROM orders WHERE status = 'completed' ORDER BY created_at DESC LIMIT 100; ` #### 查找缺失的索引 `sql SELECT schemaname, tablename, attname, n_distinct, correlation FROM pg_stats WHERE tablename = 'your_table' ORDER BY n_distinct DESC; ` #### 索引使用率分析 `sql SELECT schemaname, tablename, indexname, idx_scan as index_scans, idx_tup_read as tuples_read, idx_tup_fetch as tuples_fetched FROM pg_stat_user_indexes WHERE idx_scan < 50 -- 很少使用的索引 ORDER BY idx_scan; ` --- ## 💾 备份恢复 ### 备份 完整备份: `bash pg_dump -F c -f backup_$(date +%Y%m%d).dump your_database ` 仅结构备份: `bash pg_dump -s -f schema_only.sql your_database ` 仅数据备份: `bash pg_dump -a -f data_only.sql your_database ` 单表备份: `bash pg_dump -t table_name -f table_backup.sql your_database ` ### 恢复 恢复完整备份: `bash pg_restore -d target_database backup_file.dump ` 列出备份内容: `bash pg_restore -l backup_file.dump ` 选择性恢复: `bash pg_restore -d target_database -t table_name backup_file.dump ` --- ## 🔍 监控与维护 ### 数据库大小查询 `sql SELECT datname as database_name, pg_size_pretty(pg_database_size(datname)) as size FROM pg_database ORDER BY pg_database_size(datname) DESC; ` ### 表大小查询 `sql SELECT schemaname, tablename, pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) as size FROM pg_tables WHERE schemaname = 'public' ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC; ` ### 活跃连接查询 `sql SELECT pid, usename, application_name, client_addr, state, query_start, state_change, query FROM pg_stat_activity WHERE state != 'idle' ORDER BY query_start; ` --- ## ⚠️ 注意事项 ### 性能优化建议 1. 使用合适的索引 - 为 WHERE、JOIN、ORDER BY 字段创建索引 2. 避免 SELECT - 只查询需要的字段 3. 使用 EXPLAIN - 复杂查询先分析执行计划 4. 定期 VACUUM - 清理死元组,回收空间 5. 统计信息更新 - ANALYZE table 更新统计信息 ### 安全建议 1. 使用参数化查询 - 防止 SQL 注入 2. 最小权限原则 - 使用只读用户进行查询 3. 定期备份 - 生产环境必须开启定时备份 4. 连接池配置 - 使用 PgBouncer 管理连接 --- ## 🎓 示例对话 ### 示例 1:复杂分析查询 用户: "查询每个部门员工的薪资排名" AI: "使用窗口函数查询每个部门的员工薪资排名" `sql SELECT department, name, salary, DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) as salary_rank FROM employees ORDER BY department, salary_rank; ` ### 示例 2:JSONB 查询 用户: "查询用户偏好设置中主题为 dark 的用户" AI: "查询 JSONB 字段中的嵌套值" `sql SELECT id, username, metadata->'preferences' as preferences FROM users WHERE metadata->>'theme' = 'dark'; ` ### 示例 3:性能优化 用户: "帮我分析这个查询为什么慢" AI: "使用 EXPLAIN ANALYZE 分析查询执行计划" `sql EXPLAIN (ANALYZE, BUFFERS) SELECT FROM orders o JOIN users WHERE o.user_id = users.id AND o.created_at >= NOW() - INTERVAL '7 days'; `` --- ## 📚 参考资料 - PostgreSQL 官方文档 - PostgreSQL 性能优化 - PostgreSQL JSONB 使用指南 --- 开始使用: 告诉我你的查询需求,我会利用 PostgreSQL 的强大特性帮你完成!🚀

数据来源ClawHub ↗ · 中文优化:龙虾技能库