在转储文件上使用 pg_restore

Posted

技术标签:

【中文标题】在转储文件上使用 pg_restore【英文标题】:Using pg_restore on dump file 【发布时间】:2012-06-04 03:20:01 【问题描述】:

我正在尝试将 Heroku 上的数据库复制到本地计算机。

我通过以下方式创建了数据库的备份:

heroku pgbackups:capture

这会创建一个我通过创建指向它的 URL 链接下载的数据库的转储文件:

heroku pgbackups:url b004

但现在我有一个转储文件,但我真的不知道如何处理它。我试过了

pg_restore

恢复数据库,但我不知道该信息去了哪里。我基本上想从这个转储文件中创建一个 .db 文件。这可能吗?

最终我的最终目标是访问这个数据库——所以如果复制数据库的另一种方法更好,我可以接受。

【问题讨论】:

等等——你在 Heroku 上有一个 sqlite3 数据库,你正在使用 pgbackups 来备份它???请澄清一下,我认为您没有在 Heroku 上使用 sqlite。 好的,看来 Heroku 在推送期间将 sqlite3 数据库转换为 PostgreSQL。所以这是一个 PostgreSQL 数据库,我想我正在使用它。 在本地安装 postgres 并使用它。如果你在 OS X 上试试 postgresapp.com 谢谢 我现在就试试这个。 【参考方案1】:

首先你应该在你的本地机器上安装 postgres。

PostgreSQL cheat sheet for django beginners

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

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

就是这样,您的数据现在已从您的 heroku 应用中克隆。

【讨论】:

【参考方案2】:

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

由于使用heroku run在Web服务器上运行生成文件的命令可能很困难,我建议您改为安装django smuggler,这使得该操作成为管理员中的点击事件。

【讨论】:

好的,我现在正在尝试。我在 Heroku 上做了转储数据。但是现在,我如何将它从 heroku 中取出并放到我的本地机器上? 这就是我推荐 django smuggler 的原因,它会在浏览器中将转储文件作为文件下载提供给您。

以上是关于在转储文件上使用 pg_restore的主要内容,如果未能解决你的问题,请参考以下文章

SVN转储大小混乱

在远程机器上恢复转储

打开具有不同可执行文件但源相同的核心转储文件

使用PTrace转储进程打开的文件

使用 .php 文件生成 MySQL 转储

mysql 从远程数据库转储到本地主机输出文件