Azure Postgres执行pg_restore时提示找不到容器内dump文件如何处理
根本原因
pg_restore 工具本身不支持直接读取远程HTTP/HTTPS链接的dump文件,它仅能读取本地文件系统内的文件路径。你直接传入Azure Blob容器的访问URL时,工具会将该URL识别为本地文件路径去查找,Cloud Shell本地没有对应路径的文件,自然会返回找不到文件的错误。
正确操作步骤
- 第一步:先将容器内的dump文件下载到Cloud Shell的本地临时目录,PowerShell环境下使用
Invoke-WebRequest命令即可:
Invoke-WebRequest -Uri "<替换为你的容器文件访问URL>" -OutFile "./pg_backup.dump"
如果你的Blob容器为私有访问权限,需要确保传入的URL带有效SAS令牌,否则会下载失败。
- 第二步:使用下载后的本地文件路径执行
pg_restore命令,参考示例:
pg_restore -v --no-owner --host=<替换为你的PG服务器名>.postgres.database.azure.com --port=5432 --username=user@<替换为你的PG服务器名> --dbname=<替换为目标库名> ./pg_backup.dump
额外注意:你原命令中的
--host参数错误添加了user@前缀,host参数仅需填写PostgreSQL服务器的域名即可,不需要带用户名前缀,否则后续连接数据库时会报错。
内容的提问来源于stack exchange,提问作者humble
相关产品推荐
相关产品推荐

