我正在处理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
。
到目前为止我的流程如下:
tar czf dvd-database.tar.gz dvdrental.zip
将其解压缩到.tar(我还尝试首先将zip解压缩到一个文件夹,结果相同,然后删除.gz)pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar
。我目前正在使用Postgres 9.5,这可能会导致问题。寻找答案,指出我在此过程中出错的地方或如何将Postgres数据库的存档更新为9.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 中提取的文件夹