通过PgAdmin4调用psql从网络驱动器恢复数据库失败求助
PostgreSQL数据库恢复问题解决方法
错误原因分析
- 前两条命令报错
Invalid command \DB_BU,是因为Windows路径中的反斜杠\被psql当作转义字符,Z:\DB_BU会被解析为Z:加上转义后的DB_BU,psql将\DB_BU识别为无效的元命令,导致报错。
针对无报错但未恢复的解决方案
1. 确认执行环境和命令方式
很多用户会在psql交互窗口中输入完整的psql -U...启动命令,这是错误的——psql交互模式仅支持SQL语句或psql元命令(如\l、\d)。正确执行方式:
- 在PgAdmin中打开PSQL Tool(而非Query Tool),直接输入恢复命令(不带开头的
psql):\i Z:/DB_BU/md_20220729.sql - 或在系统CMD/PowerShell中,切换到PostgreSQL的bin目录(示例路径)后执行:
cd "C:\Program Files\PostgreSQL\14\bin" psql -U postgres -d postgres -f Z:/DB_BU/md_20220729.sql
2. 修正路径格式(避免转义问题)
使用以下任意一种方式处理Windows路径:
- 用正斜杠替换反斜杠:
psql -U postgres -d postgres -f Z:/DB_BU/md_20220729.sql - 用双反斜杠转义单个反斜杠:
psql -U postgres -d postgres -f Z:\\DB_BU\\md_20220729.sql - 用引号包裹路径(确保在系统终端而非psql交互模式执行):
psql -U postgres -d postgres -f "Z:\DB_BU\md_20220729.sql"
3. 验证文件权限与可用性
- 检查网络驱动器Z盘的访问权限:确保运行psql的用户(通常是postgres系统用户或当前登录用户)能读取
Z:\DB_BU\md_20220729.sql文件。 - 在psql中执行元命令验证文件存在:
若返回文件不存在,需确认路径拼写是否正确,或网络驱动器是否正常挂载。\! dir "Z:\DB_BU\md_20220729.sql"
4. 检查备份文件类型与目标库
- 确认备份文件是纯SQL格式:用文本编辑器打开文件,开头应包含
CREATE TABLE等SQL语句。若为pg_dump自定义格式(通常后缀为.dmp),需使用pg_restore而非psql:pg_restore -U postgres -d postgres "Z:\DB_BU\md_20220729.sql" - 若恢复到
postgres系统库不合适,可先创建目标数据库:
再指定目标库恢复:CREATE DATABASE md_target;psql -U postgres -d md_target -f Z:/DB_BU/md_20220729.sql
5. 开启错误排查模式
添加-v ON_ERROR_STOP=1参数,让psql遇到错误立即停止并输出详情,便于定位问题:
psql -U postgres -d postgres -v ON_ERROR_STOP=1 -f Z:/DB_BU/md_20220729.sql
内容的提问来源于stack exchange,提问作者yaodav
相关产品推荐
相关产品推荐

