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

Docker中恢复PostgreSQL数据库报错:zsh: command not found: pg_restore

解决Docker PostgreSQL容器恢复时pg_restore找不到的问题

报错原因

你的判断完全正确:zsh提示command not found: pg_restore是因为本地未安装PostgreSQL客户端,pg_restore命令仅存在于运行PostgreSQL的Docker容器内部,之前的恢复命令错误地在本地环境调用了这个不存在的命令。

正确恢复方法

方法1:通过管道直接传入备份内容到容器执行恢复

利用docker exec -i保持标准输入打开,将本地解压后的备份内容传入容器,使用容器内的pg_restore完成恢复:

gunzip < /Users/me/Downloads/dvdrental.tar.gz | docker exec -i postgres-local-15 pg_restore -U postgres -F t -d dvdrental
  • -i 参数:确保Docker容器的标准输入保持打开,允许管道传输的备份内容进入容器。
  • 全程复用容器内的PostgreSQL工具,无需本地安装任何PostgreSQL组件。

方法2:先复制备份文件到容器内再恢复

如果倾向于先将备份文件放到容器中再操作:

  1. 复制压缩备份文件到容器内部临时目录:
docker cp /Users/me/Downloads/dvdrental.tar.gz postgres-local-15:/tmp/
  1. 进入容器执行解压与恢复命令:
docker exec -it postgres-local-15 bash
# 容器内执行以下命令:
gunzip /tmp/dvdrental.tar.gz
pg_restore -U postgres -F t -d dvdrental /tmp/dvdrental.tar

验证恢复结果

可以通过容器内的psql快速验证数据是否恢复成功:

docker exec -it postgres-local-15 psql -U postgres -d dvdrental -c "SELECT COUNT(*) FROM film;"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:03:24