19

我正在学习 Postgres DVD 教程,并且在导入他们的示例数据库时遇到了问题。

跑步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 tar czf dvd-database.tar.gz dvdrental.zip(我也尝试先将 zip 解压缩到一个文件夹,结果相同,然后删除 .gz)
  3. pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar如上所述运行。

我目前正在使用 Postgres 9.5,这可能会导致问题。寻找一个答案,指出我在这个过程中哪里出错或如何将 Postgres 数据库的存档更新到 9.5。

4

6 回答 6

23

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

不需要按照教程说明中的建议将 dvdrental.zip 文件解压缩为未压缩的 .tar。如果指向提取数据库转储的目录,pg_restore 则将起作用:

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

于 2016-02-06T22:04:25.360 回答
3

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

createuser --superuser postgres

然后使用角色创建服务器(PosgreSQL),使用角色创建postgres数据库。在你可以从提取的文件夹中成功恢复数据库之后dvdrentalpostgres

于 2020-06-07T08:51:53.703 回答
0

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

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

只需将 zip 解压缩到一个文件夹中,并pg_restore在我的情况下使用这些选项执行命令 Mac os /pg-db/dvdrental/zip 提取目录在哪里。

于 2018-04-29T08:28:06.323 回答
0

使用 pgAdmin 4 会更容易。

通过 pgAdmin 将 tar 文件恢复到数据库时,您将收到此错误。我们通常会卡在这一点上而忘记检查架构。

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

于 2020-08-25T12:05:01.247 回答
0

如果您正在运行 postgres,请Docker确保传递主机名和端口,

pg_restore -U postgres -h localhost -p 5432 -d dvdrental ./Downloads/dvdrental

这里./Downloads/dvdrental是从 dvdrental.zip 中提取的文件夹

于 2021-07-01T16:55:15.790 回答
0

不知道原因,但这就是它对我有用的方式。

我使用的是 ubuntu 20.04、pgadmin4 5.7 版、postgres 12.8 版。

在“restore”对话框中,filename中的“custome and tar”、“...”,点击upload上传tar文件,选择上传的文件,然后选择pre-data、data和post-data三个选项. 收到错误:失败,退出代码为 1。

删除了数据库,再次创建了数据库(同名),方法和以前完全一样。

这第二次成功了。在日志中,它执行了以下 cmd:

/usr/bin/pg_restore --host "localhost" --port "5432" --username "postgres" --no-password --dbname "mydb" 
--section=pre-data --section=data --section=post-data --verbose "/var/lib/pgadmin/storage/my_email.com/restore_file.tar"
于 2021-09-25T08:39:10.163 回答