在转储文件上使用pg_restore

4

我有一个数据库在Heroku上,想要将其复制到我的本地机器。

我通过执行以下命令创建了数据库的备份:

heroku pgbackups:capture

这将创建一个数据库的转储文件,然后我通过创建一个URL链接来下载它:

heroku pgbackups:url b004

但是现在我只有一个转储文件,不知道该怎么做。 我尝试使用 pg_restore 来恢复数据库,但我不知道信息去哪里了。 我基本上想从这个转储文件中创建一个 .db 文件。 这是可能的吗?

最终我的目标是访问此数据库 - 因此,如果有更好的复制数据库的方法,那也可以。


等一下 - 你在Heroku上有一个sqlite3数据库,并且正在使用pgbackups进行备份?请澄清一下,我认为你不应该在Heroku上使用sqlite。 - John Beynon
好的,看起来Heroku在推送过程中会将sqlite3数据库转换为PostgreSQL。因此我猜我正在使用一个PostgreSQL数据库。 - user1328021
本地安装Postgres并使用它。如果您使用的是OS X,请尝试http://postgresapp.com。 - Will
谢谢Will,我现在要尝试一下。 - user1328021
2个回答

3

Heroku 不允许使用 sqlite 文件,因为它们具有只读文件系统。但是您可以使用 Django 通过 dumpdata 命令将数据转储到 JSON 文件中,然后将其导入本地开发环境。

由于使用 heroku run 运行生成文件的命令可能很困难,因此建议您安装 django smuggler,在管理界面中轻松完成此操作。

enter image description here


好的,我现在正在尝试这个。我已经在Heroku上执行了dumpdata命令。但是现在,我该如何将其从Heroku下载到我的本地机器上呢? - user1328021
这就是为什么我建议使用Django Smuggler,它可以在浏览器中直接提供转储文件下载。 - Chase Seibert

3

首先,您应该在本地机器上安装PostgreSQL。

PostgreSQL快捷键表适用于django初学者

然后,使用pg_restore命令导入转储文件:

pg_restore -d yournewdb -U yournewuser --role=yournewuser /tmp/b001.dump

这就是全部内容,你的数据现在已经从Heroku应用程序克隆出来了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接