如何在 PostgreSQL 上恢复 .sql pg_dump

问题描述 投票:0回答:2

我有一个 SQL 数据库的转储,它是一个

.sql
文件。我尝试在 pgAdmin 中恢复它,但出现错误:

pg_restore: error: input file appears to be a text format dump. Please use psql.

然后我尝试使用

psql
CLI,但它只列出了我的用户,没有显示任何错误或恢复任何内容。我用命令尝试
psql

psql grana < c:\dump-grana.sql

得到图像上的结果:

另外,当我尝试使用命令

psql -U [user] -d [dbname] -1 -f <filename>.sql
时,它返回与上图相同的结果。

postgresql psql pgadmin pg-dump pg-restore
2个回答
0
投票

如果您已经使用以下

pg_dump
创建转储文件

pg_dump -Fc -b $database > $database.dump

然后使用以下恢复命令:

pg_restore --verbose --clean --if-exists --exit-on-error --dbname $database $database.dump --single-transaction

您将必须公开以下变量

# Postgres restore
export PGPORT=${POSTGRES_PORT}
export PGHOST=${POSTGRES_HOST}
export PGUSER=${POSTGRES_USERNAME}
export PGPASSWORD=${POSTGRES_PASSWORD}

0
投票

您可能不小心用文件的路径覆盖了文件的内容。

psql
正在从文件内部接收文字
c:\dump...
并且:

  1. 忽略最初的
    c:
  2. 然后执行
    \du
    元命令
    描述可用用户
  3. 忽略其余部分或在上面的输出之后出现更多意外命令或语法错误

如果您自己创建了转储,则需要重做。否则,获取一份新副本并重试:只要

.sql
文件的内容有意义,您的命令应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.