在转储文件上使用 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的主要内容,如果未能解决你的问题,请参考以下文章