首页龙虾技能列表 › PostgreSQL Skill - 高级数据库管理 — PostgreSQL Skill — 高级数据库管理

PostgreSQL Skill - 高级数据库管理 — PostgreSQL Skill — 高级数据库管理

v1.0.0

PostgreSQL 数据库管理技能,支持自然语言查询、复杂查询、性能分析、JSON 操作、全文搜索等高级功能,适用于开发者、数据分析师和 DBA。

0· 222·1 当前·1 累计
by @ryanlee-gemini·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/23
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能的代码无需安装,包元数据与 PostgreSQL 帮助器一致,要求安装 psql 客户端和提供数据库连接信息,但存在小的元数据不一致和安全/隐私警告,特别是关于凭据提供的方式。
评估建议
该技能如所宣称,提供 Postgres 查询、备份/恢复命令,建议在使用前:1) 验证技能源;2) 避免在长生命周期的 shell 中导出 PGPASSWORD;3) 只在控制的机器上运行 sudo/apt 或 brew;4) 在非生产数据库上测试生成的查询;5) 注意元数据不匹配。若接受这些预防措施,技能与其目的一致。...
详细分析 ▾
用途与能力
名称/描述与内容匹配:SKILL.md 提供 SQL 示例、备份/恢复建议、性能查询、JSON/FTS 指南。package.json 声明了所需的 PostgreSQL 客户端二进制文件(psql、pg_dump、pg_restore)和安装块 — 适用于 Postgres 管理技能。注意:注册表元数据报告没有所需的二进制文件和没有主页,但 package.json 包括安装和主页/仓库;这是元数据中的不一致,但不是功能与技能目的的不匹配。
指令范围
SKILL.md 集中于数据库任务:安装客户端、配置连接变量、SQL 示例、EXPLAIN 使用、备份。它指示设置环境变量(PGHOST/PGPORT/PGUSER/PGPASSWORD/PGDATABASE)并运行系统安装命令(apt / brew)。它不指示代理读取无关文件或将数据泄露到外部端点。 (小准确性备注:一些 SQL 示例使用 QUALIFY,这不是标准 PostgreSQL 语法 — 正确性问题,而不是安全问题。)
安装机制
没有捆绑可执行代码,但 package.json 包括一个 openclaw.install 部分,运行标准系统包安装(apt、brew)用于 PostgreSQL 客户端。这些是来自已知包源的标准包管理器命令 — 没有使用任意下载 URL 或存档提取。使用 apt 安装可能需要 sudo;预期系统包安装的用户权限/特权。
凭证需求
该技能合理地需要数据库连接信息(PGHOST/PGPORT/PGUSER/PGPASSWORD/PGDATABASE)来运行。然而,注册表元数据没有声明所需的环境变量或主要凭据,而 SKILL.md 明确指示导出 PGPASSWORD 和其他 PG_* 变量。这种不匹配是元数据的省略 — 功能上环境变量是成比例的,但技能要求用户将敏感凭据放在环境变量(PGPASSWORD)中,这有安全含义(在进程列表/Shell 历史中暴露)。
持久化与权限
该技能仅为指令,不请求持久存在、特殊系统配置路径或 always:true。它包括可选的系统安装命令用于客户端工具,这是正常的且范围有限。
安全有层次,运行前请审查代码。

License

MIT-0

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

运行时依赖

无特殊依赖

版本

latestv1.0.02026/3/23

🎉 首发版本! 主要功能:智能查询、高级分析、JSON 操作、全文搜索、性能分析、备份恢复。适合开发者、数据分析师、DBA。

● 无害

安装命令 点击复制

官方npx clawhub@latest install postgres-skill
镜像加速npx clawhub@latest install postgres-skill --registry https://cn.clawhub-mirror.com

技能文档

通过自然语言,轻松管理 PostgreSQL,利用其强大特性!


🎯 功能特点

核心能力

  • 🔍 智能查询 - 自然语言描述,自动生成 SQL
  • 📊 高级分析 - 窗口函数、CTE、复杂聚合
  • 📝 JSON 操作 - JSONB 查询、更新、索引
  • 🔎 全文搜索 - PostgreSQL 强大的全文搜索能力
  • ⚡ 性能分析 - EXPLAIN ANALYZE、索引优化
  • 💾 备份恢复 - pg_dump/pg_restore 完整方案

📋 使用场景

查询场景

  • "查询每个部门薪资前三的员工"(窗口函数)
  • "找出重复的订单号"(HAVING 子句)
  • "统计用户留存率"(复杂分析查询)

JSON 数据场景

  • "查询 JSON 字段中特定路径的值"
  • "更新 JSONB 数据中的嵌套字段"
  • "为 JSON 字段创建 GIN 索引"

全文搜索场景

  • "搜索包含特定关键词的文章"
  • "按相关度排序搜索结果"
  • "中文全文搜索配置"

🔧 前置条件

1. 安装 PostgreSQL 客户端

Ubuntu/Debian:

sudo apt update
sudo apt install postgresql-client

macOS:

brew install libpq

Windows: 下载并安装 PostgreSQL 官方客户端工具

2. 配置数据库连接

使用环境变量:

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的员工

SELECT department, name, salary, RANK() OVER (PARTITION BY department ORDER BY salary DESC) as rank
FROM employees
QUALIFY rank <= 3;

CTE (Common Table Expression)

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 字段

-- 查询 JSON 中的嵌套值
SELECT id,
       metadata->>'user_id' as user_id,
       metadata->'preferences'->>'theme' as theme
FROM users
WHERE metadata->>'status' = 'active';

更新 JSONB 字段

UPDATE users
SET metadata = jsonb_set(
    metadata,
    '{preferences,theme}',
    '"dark"'
)
WHERE id = 123;

为 JSONB 创建索引

-- GIN 索引支持高效的 JSONB 查询
CREATE INDEX idx_users_metadata_gin ON users USING gin (metadata jsonb_path_ops);

全文搜索

配置中文全文搜索

-- 创建全文搜索索引
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 查询计划

EXPLAIN (ANALYZE, BUFFERS, VERBOSE)
SELECT  FROM orders
WHERE status = 'completed'
ORDER BY created_at DESC
LIMIT 100;

查找缺失的索引

SELECT schemaname, tablename, attname, n_distinct, correlation
FROM pg_stats
WHERE tablename = 'your_table'
ORDER BY n_distinct DESC;

索引使用率分析

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;

💾 备份恢复

备份

完整备份:

pg_dump -F c -f backup_$(date +%Y%m%d).dump your_database

仅结构备份:

pg_dump -s -f schema_only.sql your_database

仅数据备份:

pg_dump -a -f data_only.sql your_database

单表备份:

pg_dump -t table_name -f table_backup.sql your_database

恢复

恢复完整备份:

pg_restore -d target_database backup_file.dump

列出备份内容:

pg_restore -l backup_file.dump

选择性恢复:

pg_restore -d target_database -t table_name backup_file.dump

🔍 监控与维护

数据库大小查询

SELECT datname as database_name,
       pg_size_pretty(pg_database_size(datname)) as size
FROM pg_database
ORDER BY pg_database_size(datname) DESC;

表大小查询

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;

活跃连接查询

SELECT pid, usename, application_name, client_addr, state,
       query_start, state_change, query
FROM pg_stat_activity
WHERE state != 'idle'
ORDER BY query_start;

⚠️ 注意事项

性能优化建议

  • 使用合适的索引 - 为 WHERE、JOIN、ORDER BY 字段创建索引
  • 避免 SELECT - 只查询需要的字段
  • 使用 EXPLAIN - 复杂查询先分析执行计划
  • 定期 VACUUM - 清理死元组,回收空间
  • 统计信息更新 - ANALYZE table 更新统计信息

安全建议

  • 使用参数化查询 - 防止 SQL 注入
  • 最小权限原则 - 使用只读用户进行查询
  • 定期备份 - 生产环境必须开启定时备份
  • 连接池配置 - 使用 PgBouncer 管理连接

🎓 示例对话

示例 1:复杂分析查询

用户: "查询每个部门员工的薪资排名"

AI: "使用窗口函数查询每个部门的员工薪资排名"

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 字段中的嵌套值"

SELECT id, username, metadata->'preferences' as preferences
FROM users
WHERE metadata->>'theme' = 'dark';

示例 3:性能优化

用户: "帮我分析这个查询为什么慢"

AI: "使用 EXPLAIN ANALYZE 分析查询执行计划"

EXPLAIN (ANALYZE, BUFFERS)
SELECT  FROM orders o
JOIN users
WHERE o.user_id = users.id
  AND o.created_at >= NOW() - INTERVAL '7 days';

📚 参考资料


开始使用: 告诉我你的查询需求,我会利用 PostgreSQL 的强大特性帮你完成!🚀

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务