PostgreSQL.gz格式数据库恢复:pgAdmin/控制台操作及语法问题
恢复PostgreSQL数据库(从.gz压缩包的file.out文件)
一、先解压压缩包
不管用哪种恢复方式,先把.gz压缩包里的file.out提取出来:
- Linux/macOS控制台:执行
gzip -d 你的备份文件名.gz或gunzip 你的备份文件名.gz,解压后得到file.out - Windows:用7-Zip、WinRAR等工具右键解压即可
二、控制台恢复(分两种备份格式处理)
情况1:file.out是纯SQL文本备份(最常见)
如果你的备份是通过pg_dump dbname > file.out生成的纯文本格式,不能用pg_restore——这大概率是你之前用pg_restore报语法错误的原因,应该用psql命令恢复:
- 确保本地PostgreSQL服务已启动
- 打开终端/命令提示符,执行:
psql -U 你的PostgreSQL用户名 -d 目标数据库名 -f /file/out的完整路径/file.out
- 替换
你的PostgreSQL用户名为有权限的用户(比如默认的postgres) 目标数据库名需要提前创建好空数据库,可以用命令createdb -U 用户名 目标数据库名创建- 路径要写全,比如Windows下可能是
C:\backup\file.out,Linux下是/home/user/backup/file.out
情况2:file.out是自定义/归档格式备份(用pg_dump -Fc生成)
如果确实是这种二进制备份格式,用pg_restore的正确语法示例:
pg_restore -U 你的PostgreSQL用户名 -d 目标数据库名 -v /file/out的完整路径/file.out
- 同样需要提前创建空的目标数据库
-v是 verbose模式,会显示恢复过程,方便排查问题- 如果仍报错,检查参数顺序(比如
-U和用户名不能分开)、路径是否正确,若备份时指定了特定schema,需添加-n 你的schema名参数
三、用pgAdmin恢复
- 打开pgAdmin,连接到本地PostgreSQL服务器
- 创建目标数据库:右键点击「Databases」→「Create」→「Database」,填写数据库名后点击Save
- 右键点击刚创建的数据库→「Restore...」
- 在恢复窗口中:
- 「Filename」:点击选择按钮,找到解压后的
file.out文件 - 「Format」:根据备份格式选择:
- 纯SQL文本选「Plain」
- 自定义/归档格式选「Custom or tar」
- 切换到「Options」标签,可勾选「Clean before restore」(恢复前清空目标数据库)等选项
- 点击「Restore」开始恢复
- 「Filename」:点击选择按钮,找到解压后的
常见问题排查
- pg_restore语法错误:优先确认备份格式,纯文本备份必须用
psql而非pg_restore - 权限问题:确保执行命令的用户拥有PostgreSQL超级权限,或目标数据库的读写权限
- 版本兼容:本地PostgreSQL版本尽量不低于服务器版本,避免版本不兼容导致的恢复失败
内容的提问来源于stack exchange,提问作者piolvi
相关产品推荐
相关产品推荐

