我正在使用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文件
1.使用tar czf dvd-database.tar.gz dvdrental.zip
将其解压缩为.tar(我也尝试过先将zip解压缩到一个文件夹,结果相同,同时删除.gz)
1.如上所述运行pg_restore -U postgres -d dvdrental ~[filepath]/dvd-database.tar
。
我目前使用的是Postgres 9.5,这可能是导致问题的原因。寻找一个答案,指出我在这个过程中出错的地方,或者如何将Postgres数据库的存档更新到9.5。
8条答案
按热度按时间sg24os4d1#
根据上面的评论,解决方案很简单。
不dvdrental.zip需要按照教程说明中的建议将www.example.com文件解压缩为未压缩的.tar。
pg_restore
will work,如果指向提取数据库转储的目录:pg_restore -U <username> -d dvdrental <your/path/to/extracted/dir>/dvdrental
w6lpcovy2#
我的问题是,在安装postgresql时,我为超级用户选择了不同的名称(例如
root
,而不是postgres
)。dvdrental/restore.sql
文件使用postgres
角色。因此,要解决这个问题,您需要创建另一个名为postgres
的超级用户。然后创建具有角色
postgres
的服务器(PosgreSQL)和具有角色postgres
的数据库dvdrental
。后u可以成功地恢复数据库从解压缩文件夹klr1opcd3#
在尝试了几个小时后,为我工作的是下面的命令。自从PgAdmin 4以来,它很难使用。
只需将zip解压到一个文件夹中,然后使用这些选项执行
pg_restore
命令(在我的情况下,Mac OS中的/pg-db/dvdrental/
是zip解压目录)。ippsafx74#
如果你在
Docker
上运行你的postgres,那么确保传递主机名和端口,这里,
./Downloads/dvdrental
是从dvdrental.zip提取的文件夹d6kp6zgx5#
不知道为什么,但这就是它对我的作用。
我用的是ubuntu 20.04,pgadmin4版本5.7,postgres版本12.8。
在“恢复”对话框中,“custome and tar”,“...”在文件名中,点击上传上传tar文件,选择上传的文件,然后选择三个选项:前数据、数据和后数据。出现错误:失败,退出代码为1。
重新创建数据库,再次创建数据库(使用相同的名称),执行与以前完全相同的操作。
第二次成功了。在日志中,它执行了以下命令:
xlpyo6sf6#
要将SQL文本文件恢复到PostgreSQL数据库中,可以使用
psql
命令行工具,该工具通常用于与PostgreSQL数据库交互。以下是恢复SQL文本文件的步骤:1.打开命令提示符或终端:在计算机上打开命令提示符或终端窗口。
1.导航到目录:使用
cd
命令导航到SQL文本文件所在的目录。1.登录PostgreSQL:使用
psql
命令登录到PostgreSQL数据库。您需要提供用户名和数据库名称作为参数。您可能还需要输入密码。将
your_username
替换为PostgreSQL用户名,将your_database
替换为要将SQL文件还原到的数据库的名称。1.执行SQL文件:登录后,您可以使用
\i
命令和文件路径从文本文件执行SQL命令:将
/path/to/your_sql_file.sql
替换为SQL文本文件的完整路径。1.退出psql:执行SQL文件后,可以通过键入以下命令退出
psql
:这将使您返回到命令提示符。
就是这样!您的SQL文本文件已恢复到PostgreSQL数据库中。确保SQL文件包含有效的SQL语句,并且与PostgreSQL数据库版本兼容。
gcmastyq7#
我在下面得到了同样的错误:
pg_restore:错误:输入文件似乎不是有效的存档
因为我用pg_dump导出了
apple
数据库但没有存档到backup.sql
,如下所示:或者:
然后,我尝试使用pg_restore将非归档
backup.sql
导入到orange
数据库,pg_restore必须用于导入归档文件:所以,我用psql做了它,它必须用于导入非归档文件,然后我可以解决这个错误。* 我的答案解释了如何导出模式和数据,我的答案解释了如何导入它们:
bgibtngc8#
使用pgAdmin 4会更容易。
当通过pgAdmin将tar文件恢复到数据库时,您将收到此错误。我们通常会在这一点上卡住,忘记检查模式。
忽略错误。数据已加载并恢复。