You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postgres中使用COPY调用top命令,能否获取命令返回结果?

解决PostgreSQL调用top命令获取输出的问题

你当前用的COPY TO PROGRAM逻辑搞反了——这个命令是把PostgreSQL的查询结果传给外部程序,而不是读取外部程序的输出,所以top的内容根本没回到数据库里,自然客户端拿不到。

正确的做法是用COPY FROM PROGRAM把top的输出导入到数据库表中,再查询表获取结果,步骤如下:

  1. 创建临时表存储top的输出(会话结束自动销毁,不用手动清理):
CREATE TEMP TABLE top_output (line text);
  1. 把top的输出导入临时表:
COPY top_output (line)
FROM PROGRAM 'top -b -n 1'
WITH (FORMAT text);
  1. 查询临时表就能拿到top的完整输出:
SELECT * FROM top_output;

注意事项

  • 执行操作的PostgreSQL用户必须拥有EXECUTE权限,否则会报错(可通过GRANT EXECUTE ON FUNCTION pg_catalog.pg_read_file(text) TO your_user;或调整pg_hba.conf相关配置实现)。
  • 确保top命令参数正确:-b是批处理模式(避免终端交互格式),-n 1是只执行一次,这样输出是纯文本,适合导入。

内容的提问来源于stack exchange,提问作者dusty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 22:49:51