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

psql COPY命令临时空间耗尽:本地还是远程主机?

判定COPY命令磁盘空间不足的主机归属

场景与执行命令

通过Python进程fork执行psql命令,实现从远程PostgreSQL数据库读取数据,通过COPY直接传输到本地PostgreSQL存储。简化后的命令如下:

psql --quiet -X --quiet 
    --command='\pset tuples_only'
    --command='\copy (TABLE QUERY) to program
        \'psql \"--command=copy TABLE from stdin with (format binary)\"\n        postgresql://apolloqa:Apollo123@LOCALHOST:PORT/LOCAL_DB\' 
    with (format binary)' postgresql://REMOTE_USER:REMOTE_PASS@REMOTE_HOST:PORT/REMOTE_DB

(注:日志中引号格式不影响命令执行,与当前问题无关)

执行日志

Dec 20 03:06:51 LOCAL_HOST copying_server.sh[2788715]: PSQL STDOUT:
Dec 20 03:06:51 LOCAL_HOST copying_server.sh[2788715]: COPY 1310
Dec 20 03:06:51 LOCAL_HOST copying_server.sh[2788715]: COPY 29285588
Dec 20 03:06:51 LOCAL_HOST copying_server.sh[2788715]:
Dec 20 03:06:51 LOCAL_HOST copying_server.sh[2788715]: PSQL STDERR:
Dec 20 03:06:51 LOCAL_HOST copying_server.sh[2788715]: ERROR:  could not write to file \"base/pgsql_tmp/pgsql_tmp122309.3\": No space left on device
Dec 20 03:06:51 LOCAL_HOST db_copy_server.sh[2788715]: ERROR:  COPY file signature not recognized

问题分析与结论

  • 核心错误指向:base/pgsql_tmp/是PostgreSQL服务器端专属的临时文件存储目录,仅数据库服务进程会向该路径写入临时数据,客户端psql不会在本地生成此路径的文件。
  • 错误连锁逻辑:远程数据库执行查询时,因结果集过大需写入临时文件,但远程磁盘空间耗尽导致写入失败;本地psql因接收了中断的不完整二进制数据,才触发COPY file signature not recognized的衍生错误。
  • 最终结论:磁盘空间不足的是远程数据库主机,本地主机空间充足可直接排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 18:35:16