如何从heroku下载db?

Sas*_*ash 27 postgresql mysqldump heroku heroku-postgres

我正在使用heroku,我想从我的应用程序(heroku)下载数据库,所以我可以对其进行一些更改,我已经安装了pgbackups,但是使用了heroku pgbackups:url下载的.dump文件

如何下载postgresql文件或将.dump转换为postgresql文件?

Ale*_*eue 50

如果您正在使用Heroku的pgbackup(您可能应该使用它):

$ heroku pg:backups capture
$ curl -o latest.dump `heroku pg:backups public-url`
Run Code Online (Sandbox Code Playgroud)

将其翻译成postgres数据库

$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
Run Code Online (Sandbox Code Playgroud)

请参阅https://devcenter.heroku.com/articles/heroku-postgres-import-export

  • 前两个命令显然是逐字的,但在第三个命令中,我不得不用我的Postgres用户名替换`myuser`,用我希望将数据转换成数据库的名称替换为`mydb`. (5认同)

Joh*_*non 14

在CLI中有一个命令 - heroku db:pull它将为您执行此操作.db:pull你可能会有点慢,所以你可能会更好地使用下一个选项.

如果你使用复杂的postgress数据类型(hstore,数组等),那么你需要使用pgtransfer插件https://github.com/ddollar/heroku-pg-transfer,它基本上会在Heroku上进行备份并在本地恢复它.

更新:db:pulldb:push已过时,应改为pg:pullpg:push-在阅读更多https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull

  • db:pull不再有效,你必须使用pg:pull. (3认同)

J0A*_*NMM 5

我发现文档 pull/push 中建议的第一种方法更容易。不需要密码或用户名。

PG:拉

pg:pull 可用于将远程数据从 Heroku Postgres 数据库拉到本地机器上的数据库中。该命令如下所示:

$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi

此命令将创建一个名为“mylocaldb”的新本地数据库,然后DATABASE_URL从应用程序“sushi”的数据库中提取数据。为了防止意外的数据覆盖和丢失,本地数据库必须不存在。在继续之前,系统将提示您删除现有的本地数据库。

起初我有一个错误:/bin/sh: createdb: command not found; 我在这个 SO post 之后解决了这个问题。


文档中还描述了一个替代方案(我还没有尝试过)是:

要从 Heroku Postgres 数据库导出数据,请创建新备份并下载。

$ heroku pg:backups:capture

$ heroku pg:backups:download
Run Code Online (Sandbox Code Playgroud)

来源:使用 PG 备份导入和导出 Heroku Postgres 数据库