如何在PostgreSQL中恢复.sql格式的pg_dump备份文件
解决PostgreSQL文本备份恢复问题
问题回顾
使用pgAdmin恢复.sql格式备份时出现错误:
pg_restore: error: input file appears to be a text format dump. Please use psql.
改用psql执行如下命令后,仅显示用户信息,无报错但未完成数据库恢复:
psql grana < c:\dump-grana.sql
使用psql -U [user] -d [dbname] -1 -f <filename>.sql命令得到相同结果。
解决方案步骤
1. 确认目标数据库已存在
首先登录psql命令行,查看是否存在目标数据库grana:
psql -U postgres
进入psql后执行:
\l
如果列表中没有grana,先创建数据库:
CREATE DATABASE grana; \q
2. 使用完整权限用户执行恢复命令
确保使用拥有数据库创建/写入权限的用户(如默认超级用户postgres)执行恢复,避免权限不足导致的静默失败:
psql -U postgres -d grana -f c:\dump-grana.sql
如果备份文件路径包含空格,需用引号包裹路径:
psql -U postgres -d grana -f "c:\my dumps\dump-grana.sql"
3. 启用错误提示排查问题
添加-v ON_ERROR_STOP=1参数,让psql遇到错误立即停止并输出详情,方便定位问题:
psql -U postgres -d grana -v ON_ERROR_STOP=1 -f c:\dump-grana.sql
4. 检查备份文件完整性
直接打开dump-grana.sql文件,查看内容是否包含完整的数据库对象(如CREATE TABLE、INSERT语句)。如果文件仅包含用户/角色相关语句,说明备份时仅导出了用户信息,而非完整数据库,需要重新生成完整备份。
内容的提问来源于stack exchange,提问作者João Ignácio
相关产品推荐
相关产品推荐

