PostgreSQL 数据库操作技能:支持连接管理、表结构查询、CRUD、备份恢复以及 pgvector 向量查询。使用 psql 命令行工具,适用于生产环境数据库运维和开发查询。
⚠️ 安全声明
功能概述
⚠️ 安全声明是一项面向实际任务的技能,主要用于本技能需要以下权限:;读取数据库凭证( .env 或 ~/.pgpass );
核心要点
- 写入备份文件到本地磁盘;
- 执行用户提供的 SQL 语句;
- 请确保 :;
使用与执行
仅在受信任的环境中使用;备份文件妥善存储;使用最小权限数据库账户;name: postgresql-db;description: description: |;PostgreSQL 数据库操作技能(需要数据库凭证);支持连接管理、表结构查询。
结果检查与注意事项
它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
⚠️ 安全声明
本技能需要以下权限:
- 读取数据库凭证(
.env或~/.pgpass) - 写入备份文件到本地磁盘
- 执行用户提供的 SQL 语句
请确保:
- 仅在受信任的环境中使用
- 备份文件妥善存储
- 使用最小权限数据库账户
name: postgresql-db description: description: | PostgreSQL 数据库操作技能(需要数据库凭证)。 支持连接管理、表结构查询、CRUD 操作、备份恢复、pgvector 向量查询。
需要环境变量:DB_HOST, DB_PORT, DB_NAME, DB_USER, DB_PASSWORD 或使用~/.pgpass 文件存储凭证。
使用 psql 命令行工具执行操作,适合生产环境数据库运维和开发查询。
PostgreSQL 数据库操作
何时使用
✅ 使用此技能当:
- 查询数据库表结构、字段、索引
- 执行 SELECT/INSERT/UPDATE/DELETE 操作
- 创建/修改/删除表结构
- 数据库备份与恢复
- pgvector 向量相似度搜索
- 查看连接状态、锁、性能指标
- 导出/导入数据(CSV/SQL)
❌ 不使用此技能当:
- 需要图形界面操作 → 推荐 DBeaver/pgAdmin
- 复杂 ORM 操作 → 使用 SQLAlchemy/Prisma
- 数据库集群管理 → 使用 Patroni/pgBouncer
数据库配置模板
连接信息存储在 TOOLS.md 或环境变量,不要硬编码密码。
### PostgreSQL 数据库 | 项目 | 值 | |------|-----| | 主机 | your-db-host.example.com | | 端口 | 5432 | | 数据库 | your_database | | 用户 | your_user | | 密码 | $DB_PASSWORD (环境变量) |
基础命令
连接数据库
# 方式 1: 命令行参数 PGPASSWORD='密码' psql -h 主机 -p 端口 -U 用户 -d 数据库 # 方式 2: 环境变量(推荐) export PGHOST=主机 export PGPORT=5432 export PGDATABASE=数据库 export PGUSER=用户 export PGPASSWORD=密码 psql # 方式 3: .pgpass 文件(最安全) echo "主机:端口:数据库:用户:密码" >> ~/.pgpass chmod 600 ~/.pgpass psql -h 主机 -U 用户 -d 数据库
查询表结构
# 列出所有表 dt # 列出所有表(含 schema) dt+ # 查看表结构 d tablename # 查看表详细结构(含索引、约束) d+ tablename # 查看所有字段类型 SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_name = 'tablename';
基础 CRUD
# 查询 SELECT * FROM 表名 WHERE 条件 LIMIT 10; # 插入 INSERT INTO 表名 (字段 1, 字段 2) VALUES (值 1, 值 2); # 更新 UPDATE 表名 SET 字段=新值 WHERE 条件; # 删除 DELETE FROM 表名 WHERE 条件; # 计数 SELECT COUNT(*) FROM 表名;
高级操作
导出/导入
# 导出为 CSV psql -h 主机 -U 用户 -d 数据库 -c "COPY (SELECT * FROM 表名) TO STDOUT WITH CSV HEADER" > 输出.csv # 导出整个表 pg_dump -h 主机 -U 用户 -t 表名 数据库 > 表名.sql # 导入 SQL psql -h 主机 -U 用户 -d 数据库 < 输入.sql # 导入 CSV copy 表名 FROM '输入.csv' WITH CSV HEADER;
备份/恢复
# 完整备份 pg_dump -h 主机 -U 用户 数据库 > 备份.sql # 压缩备份 pg_dump -h 主机 -U 用户 数据库 | gzip > 备份.sql.gz # 恢复 psql -h 主机 -U 用户 -d 数据库 < 备份.sql # 恢复压缩 gunzip -c 备份.sql.gz | psql -h 主机 -U 用户 -d 数据库
pgvector 向量查询
# 向量相似度搜索(余弦距离) SELECT *, embedding <-> '[0.1, 0.2, ...]'::vector AS distance FROM your_table ORDER BY distance LIMIT 10; # 余弦相似度 SELECT *, 1 - (embedding <=> '[0.1, 0.2, ...]'::vector) AS similarity FROM your_table WHERE 1 - (embedding <=> '[0.1, 0.2, ...]'::vector) > 0.8 ORDER BY similarity DESC; # 查看向量维度 SELECT vector_dims(embedding) FROM your_table LIMIT 1;
性能监控
# 当前连接
SELECT pid, usename, client_addr, query, state, query_start
FROM pg_stat_activity WHERE datname = current_database();
# 锁信息
SELECT * FROM pg_locks WHERE NOT granted;
# 慢查询(需要 pg_stat_statements)
SELECT query, calls, total_exec_time, mean_exec_time
FROM pg_stat_statements ORDER BY mean_exec_time DESC LIMIT 10;
# 表大小
SELECT relname AS table,
pg_size_pretty(pg_total_relation_size(relid)) AS total
FROM pg_catalog.pg_statio_user_tables
ORDER BY pg_total_relation_size(relid) DESC;
安全实践
密码管理
- ✅ 推荐: 使用
~/.pgpass文件存储密码 - ✅ 推荐: 使用环境变量
$PGPASSWORD - ✅ 推荐: 使用
.env文件 +dotenv加载 - ❌ 避免: 在脚本中硬编码密码
- ❌ 避免: 在日志中暴露密码
权限控制
# 查看用户权限 du # 创建只读用户 CREATE USER reader WITH PASSWORD '密码'; GRANT CONNECT ON DATABASE 数据库 TO reader; GRANT USAGE ON SCHEMA public TO reader; GRANT SELECT ON ALL TABLES IN SCHEMA public TO reader; # 撤销权限 REVOKE ALL ON TABLE 敏感表 FROM reader;
审计日志
# 开启查询日志(postgresql.conf) log_statement = 'all' # 或 'mod' / 'ddl' log_duration = on log_min_duration_statement = 1000 # 记录>1s 的查询
脚本示例
批量查询脚本
#!/bin/bash # scripts/query.sh source .env psql -h $DB_HOST -U $DB_USER -d $DB_NAME -c "$1"
自动备份脚本
#!/bin/bash
# scripts/backup.sh
source .env
DATE=$(date +%Y%m%d_%H%M%S)
pg_dump -h $DB_HOST -U $DB_USER $DB_NAME | gzip > backups/${DB_NAME}_${DATE}.sql.gz
find backups/ -mtime +7 -delete # 保留 7 天
故障排查
连接失败
# 检查网络 telnet 主机 5432 # 检查 pg_hba.conf # 确保允许你的 IP 连接 # 检查防火墙 sudo ufw status | grep 5432
权限错误
# 查看当前用户 SELECT current_user; # 查看表所有者 SELECT tablename, tableowner FROM pg_tables WHERE schemaname = 'public';
性能问题
# 分析表(更新统计信息) ANALYZE 表名; # 重建索引 REINDEX TABLE 表名; # 清理死元组 VACUUM 表名; VACUUM FULL 表名; # 锁表,谨慎使用
参考资料
- PostgreSQL 官方文档
- pgvector 文档
- psql 命令速查
热门AI工具
相关专题
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章