Postgres教程:pg_restore:[archiver]输入文件似乎不是有效的存档

时间:2016-02-06 21:33:53

标签: postgresql tar pg-restore postgresql-9.5

我正在处理Postgres DVD tutorial并遇到导入其示例数据库的问题。

正在运行pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar.gz会给我pg_restore: [archiver] input file does not appear to be a valid archive

到目前为止我的流程如下:

  1. 下载dvdrental.zip文件
  2. 使用tar czf dvd-database.tar.gz dvdrental.zip将其解压缩到.tar(我还尝试首先将zip解压缩到一个文件夹,结果相同,然后删除.gz)
  3. 如上所述运行pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar
  4. 我目前正在使用Postgres 9.5,这可能会导致问题。寻找答案,指出我在此过程中出错的地方或如何将Postgres数据库的存档更新为9.5。

5 个答案:

答案 0 :(得分:6)

根据上述评论,解决方案很简单。

根据教程说明中的建议,不需要将dvdrental.zip文件解压缩到未压缩的.tar文件。 pg_restore will work如果指向提取数据库转储的目录

pg_restore -U <username> -d dvdrental <your/path/to/extracted/dir>/dvdrental

答案 1 :(得分:2)

我的问题是,在安装postgresql时,我为超级用户选择了一个不同的名称(例如root,而不是postgres)。 dvdrental/restore.sql文件使用postgres角色。 因此,要解决此问题,您需要创建另一个名为postgres的超级用户。

createuser --superuser postgres

然后创建角色为postgres的服务器(PosgreSQL)和角色为dvdrental的数据库postgres。 您可以成功从提取的文件夹中还原数据库

答案 2 :(得分:0)

尝试了几个小时后,对我来说是下面的命令。从PgAdmin 4开始,它很难使用。

/Library/PostgreSQL/10/bin/pg_restore -U postgres -p 5433  -d dvdrental /pg-db/dvdrental/

只需将zip解压缩到一个文件夹中,然后在我的Mac OS中使用这些选项执行pg_restore命令,其中/pg-db/dvdrental/是zip解压缩目录。

答案 3 :(得分:0)

使用pgAdmin 4会更容易。

通过pgAdmin将tar文件还原到数据库时,您将得到此错误。在这一点上,我们通常会陷入困境,而忘记检查架构。

忽略该错误。数据已经加载和恢复。

答案 4 :(得分:0)

如果您在 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-spatial</artifactId> <version>${hibernate.version}</version> </dependency> 上运行 postgres,请确保传递主机名和端口,

Docker

这里,pg_restore -U postgres -h localhost -p 5432 -d dvdrental ./Downloads/dvdrental 是从 dvdrental.zip 中提取的文件夹