返回顶部
p

pg-copilotPostgreSQL AI助手

PostgreSQL AI 助手 - 自然语言转 SQL、SQL 转自然语言、ERD、性能优化、分区管理、实时同步。一个技能搞定 PostgreSQL 所有需求。

作者: admin | 来源: ClawHub
源自
ClawHub
版本
V 1.0.3
安全检测
已通过
228
下载量
免费
免费
1
收藏
概述
安装方式
版本历史

pg-copilot

pg-copilot 🐘

PostgreSQL AI 助手 | 自然语言转 SQL | SQL 转自然语言 | 性能优化 | 实时同步

功能概览

功能说明
数据库连接多数据库配置、自动重连、连接池
Schema 管理
自动获取表结构、实时监听变化 | | 自然语言查询 | 中文描述需求 → 自动生成 SQL | | SQL 执行 | 安全执行、危险操作拦截 | | SQL 解释 | 将查询结果转为自然语言 | | ERD 可视化 | Mermaid 关系图展示 | | 性能优化 | EXPLAIN 分析、索引建议 | | 分区管理 | Range/List/Hash 分区 | | 实时同步 | 触发器 + 变更队列,自动同步到目标库(支持 MySQL) | | 同步日志 | synclog 记录所有同步操作 |

Quick Reference

场景操作
配置数据库config <host> <port> <user> <password> <database>
测试连接
测试连接 | | 查询数据 | 查每个用户的订单总金额 | | 解释结果 | 解释这个查询结果 | | 生成 ERD | 画出用户表和订单表的关系 | | 优化查询 | 优化这个查询 | | 创建分区 | 按月份分区 | | 配置同步 | 配置实时同步 | | 执行 SQL | 执行上面的 SQL |

核心功能

1. 自然语言查询

用户:帮我查每个用户的订单总金额

技能:

生成的 SQL


sql
SELECT
u.name AS 用户名,
SUM(o.amount) AS 订单总金额
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name
ORDER BY 订单总金额 DESC;

2. SQL 转自然语言

用户:解释这个查询结果
SELECT u.name, COUNT(o.id) as order_count
FROM users u LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.name

技能:

查询结果解释

查询类型:分组统计

结果摘要:共 5 条记录

详细分析

用户名订单数
李四4
张三
4 |
| 王五 | 2 |

统计

  • - 总订单数:10
  • 平均订单数:2
  • 最多订单:4
  • 最少订单:0

方式一:LLM 智能解释(推荐)

需要配置 LLM API:

bash

配置 LLM(支持 OpenAI/Claude 等兼容 API)


python scripts/pgcopilot.py config-llm url> [model]

示例

python scripts/pg_copilot.py config-llm https://api.openai.com/v1/chat/completions sk-xxx

方式二:简单解析(默认)

未配置 LLM 时自动使用。

3. ERD 可视化

用户:画出用户表和订单表的关系

技能:
mermaid
erDiagram
USERS ||--o{ ORDERS : places
USERS { int id PK, varchar name, varchar email }
ORDERS { int id PK, int user_id FK, numeric amount }



实时同步功能 ⚡

前置条件

重要:使用同步功能前必须满足:

  1. 1. 源表必须有主键 - 同步依赖主键定位记录
sql -- 如果表没有主键,添加: ALTER TABLE my_table ADD COLUMN id SERIAL PRIMARY KEY;
  1. 2. 安装依赖 - 需要 pymysql 支持 MySQL 目标
bash pip install pymysql
  1. 3. 目标数据库可访问 - 网络连通

同步表结构

syncconfig(配置表)

存储同步任务配置:

字段类型说明必填
sourcetableVARCHAR(255)源表名
targethost
VARCHAR(255) | 目标数据库地址 | ✅ |
| target_port | INTEGER | 目标端口(PG默认5432,MySQL默认3306) | ✅ |
| target_user | VARCHAR(255) | 目标数据库用户名 | ✅ |
| target_password | VARCHAR(255) | 目标数据库密码(Base64加密存储) | ✅ |
| target_database | VARCHAR(255) | 目标数据库名 | ✅ |
| target_table | VARCHAR(255) | 目标表名(默认=源表名) | |
| target_type | VARCHAR(20) | 目标类型:postgresqlmysql | ✅ |
| sync_mode | VARCHAR(20) | 同步模式:realtime/batch | |
| enabled | BOOLEAN | 是否启用 | |
| max_retries | INTEGER | 失败重试次数(默认3) | |
| webhook_url | TEXT | 告警 Webhook URL | |
| syncbatchsize | INTEGER | 批量大小(默认100) | |

syncchanges(变更队列表)

自动记录所有变更(由触发器填充):

字段类型说明
idBIGSERIAL主键
table_name
VARCHAR(255) | 表名 |
| operation | VARCHAR(10) | 操作:INSERT/UPDATE/DELETE |
| record_id | INTEGER | 记录ID(主键值) |
| old_data | JSONB | 旧数据(UPDATE/DELETE) |
| new_data | JSONB | 新数据(INSERT/UPDATE) |
| synced | BOOLEAN | 是否已同步 |
| created_at | TIMESTAMP | 变更时间 |

synclog(同步日志表)

记录所有同步操作:

字段类型说明
idSERIAL主键
table_name
VARCHAR(255) | 表名 |
| operation | VARCHAR(20) | 操作类型 |
| record_id | INTEGER | 记录ID |
| target_db | VARCHAR(255) | 目标数据库 |
| status | VARCHAR(20) | 状态:success/failed |
| error_message | TEXT | 错误信息 |
| created_at | TIMESTAMP | 执行时间 |


配置示例

初始化同步表:
bash
python scripts/pg_copilot.py sync-init

同步到 MySQL(生产环境):
bash

sync-add 参数说明


[type] [retries] [webhook] [batch]

python scripts/pg_copilot.py sync-add \
users \
\
\
\
\
\
users \
mysql \
3 \
https://your-webhook-url \
100

同步到 PostgreSQL:
sql
INSERT INTO syncconfig
(sourcetable, targethost, targetport, targetuser, targetpassword, targetdatabase, targettable, targettype, maxretries, webhookurl)
VALUES
(orders, , , , , , orders, postgresql, 3, https://your-webhook-url);

生产环境特性

特性说明
密码加密Base64 加密存储,支持环境变量覆盖
自动重试
失败自动重试 3 次(可配置) | | 告警通知 | 失败时发送 Webhook 通知 | | 批量同步 | 支持批量大小配置 |

查看同步状态

bash
python scripts/pg_copilot.py sync-status



分区管理

范围分区(按时间)

sql
CREATE TABLE orders_partitioned (
LIKE orders INCLUDING ALL
) PARTITION BY RANGE (created_at);

CREATE TABLE orders202401 PARTITION OF orders_partitioned
FOR VALUES FROM (2024-01-01) TO (2024-02-01);

列表分区(按状态)

sql
CREATE TABLE ordersbystatus (
LIKE orders INCLUDING ALL
) PARTITION BY LIST (status);

CREATE TABLE orderspending PARTITION OF ordersby_status
FOR VALUES IN (pending);

哈希分区(按 ID)

sql
CREATE TABLE users_partitioned (
LIKE users INCLUDING ALL
) PARTITION BY HASH (user_id);

CREATE TABLE usersp0 PARTITION OF userspartition

标签

skill ai

通过对话安装

该技能支持在以下平台通过对话安装:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 pg-copilot-1776097034 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 pg-copilot-1776097034 技能

通过命令行安装

skillhub install pg-copilot-1776097034

下载

⬇ 下载 pg-copilot v1.0.3(免费)

文件大小: 18.16 KB | 发布时间: 2026-4-15 13:52

v1.0.3 最新 2026-4-15 13:52
pg-copilot 1.0.3

- 修正同步命令说明,sync-add 示例中 `` 参数置于正确位置,避免用户配置错误
- 文档示例一致性提升,MySQL/PostgreSQL 示例端口参数保持格式统一
- 其他内容未变,核心功能与前置条件无变动

Archiver·手机版·闲社网·闲社论坛·羊毛社区· 多链控股集团有限公司 · 苏ICP备2025199260号-1

Powered by Discuz! X5.0   © 2024-2025 闲社网·线报更新论坛·羊毛分享社区·http://xianshe.com

p2p_official_large
返回顶部