Postgres 教程:pg_restore:[archiver] 输入文件似乎不是有效的存档
Postgres Tutorial: pg_restore: [archiver] input file does not appear to be a valid archive
我正在研究 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
.
到目前为止,我的流程如下:
- 下载 dvdrental.zip 文件
- 使用
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。
根据上面的评论,解决方案很简单。
将 dvdrental.zip 文件解压缩为未压缩的 .tar 没有必要按照教程说明中的建议。 pg_restore
will work 如果指向提取数据库转储的 目录:
pg_restore -U <username> -d dvdrental <your/path/to/extracted/dir>/dvdrental
在尝试了几个小时后,下面的命令对我有用。从 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 解压缩目录。
我的问题是,在安装 postgresql 时,我为超级用户选择了不同的名称(例如 root
,而不是 postgres
)。 dvdrental/restore.sql
文件使用 postgres
角色。
因此,要解决此问题,您需要创建另一个名为 postgres
.
的超级用户
createuser --superuser postgres
然后创建角色为 postgres
的服务器 (PosgreSQL) 和角色为 postgres
的数据库 dvdrental
。
在您可以从提取的文件夹成功恢复数据库后
使用 pgAdmin 4 会更容易。
在通过 pgAdmin 将 tar 文件恢复到数据库时,您会收到此错误。我们通常会卡在这一点而忘记检查模式。
忽略错误。数据已经加载和恢复。
如果您是 运行 您在 Docker
上的 postgres,请确保传递主机名和端口,
pg_restore -U postgres -h localhost -p 5432 -d dvdrental ./Downloads/dvdrental
这里,./Downloads/dvdrental
是从 dvdrental.zip
中提取的文件夹
不知道原因,但这就是我的工作方式。
我正在使用 ubuntu 20.04,pgadmin4 5.7 版,postgres 12.8 版。
在“还原”对话框中,“自定义和tar”,文件名中的“...”,点击上传上传tar文件,上传的select文件,然后 selected 三个选项:pre-data、data 和 post-data。
出现错误:失败,退出代码为 1。
删除数据库,重新创建数据库(同名),方法同上。
第二次成功了。
在日志中,它执行了以下命令:
/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"
我正在研究 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
.
到目前为止,我的流程如下:
- 下载 dvdrental.zip 文件
- 使用
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。
根据上面的评论,解决方案很简单。
将 dvdrental.zip 文件解压缩为未压缩的 .tar 没有必要按照教程说明中的建议。 pg_restore
will work 如果指向提取数据库转储的 目录:
pg_restore -U <username> -d dvdrental <your/path/to/extracted/dir>/dvdrental
在尝试了几个小时后,下面的命令对我有用。从 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 解压缩目录。
我的问题是,在安装 postgresql 时,我为超级用户选择了不同的名称(例如 root
,而不是 postgres
)。 dvdrental/restore.sql
文件使用 postgres
角色。
因此,要解决此问题,您需要创建另一个名为 postgres
.
createuser --superuser postgres
然后创建角色为 postgres
的服务器 (PosgreSQL) 和角色为 postgres
的数据库 dvdrental
。
在您可以从提取的文件夹成功恢复数据库后
使用 pgAdmin 4 会更容易。
在通过 pgAdmin 将 tar 文件恢复到数据库时,您会收到此错误。我们通常会卡在这一点而忘记检查模式。
忽略错误。数据已经加载和恢复。
如果您是 运行 您在 Docker
上的 postgres,请确保传递主机名和端口,
pg_restore -U postgres -h localhost -p 5432 -d dvdrental ./Downloads/dvdrental
这里,./Downloads/dvdrental
是从 dvdrental.zip
不知道原因,但这就是我的工作方式。
我正在使用 ubuntu 20.04,pgadmin4 5.7 版,postgres 12.8 版。
在“还原”对话框中,“自定义和tar”,文件名中的“...”,点击上传上传tar文件,上传的select文件,然后 selected 三个选项:pre-data、data 和 post-data。 出现错误:失败,退出代码为 1。
删除数据库,重新创建数据库(同名),方法同上。
第二次成功了。 在日志中,它执行了以下命令:
/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"