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

通过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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:25:51