Rails 4:如何在我的本地机器上运行从Heroku下载的Postgres数据库?

时间:2016-05-14 15:16:09

标签: ruby-on-rails postgresql heroku development-environment

我从Heroku下载了一个pg备份(它作为TextEdit文档出现),我想从我的开发环境运行它来测试一些东西。如何转换/保存它以便我可以更改我的database.yml文件来访问它?

3 个答案:

答案 0 :(得分:1)

heroku pg:pull

没有用户名/密码拉

您可以通过运行:

在本地提取Heroku PostgreSQL数据库

heroku pg:pull $HEROKU_DATABASE $LOCAL_DATABASE [--app $APP]

其中$HEROKU_DATABASE是Heroku数据库的名称,$LOCAL_DATABASE是本地数据库的名称(它将由pg:pull创建;如果命令已经存在,命令将失败为了保护您免受意外覆盖),$APP是您的应用名称。

使用用户名/密码

拉取

如果您需要为本地PostgreSQL连接提供用户名/密码,那么您可以通过PGUSERPGPASSWORD这样传递:

PGUSER=$YOUR_USER PGPASSWORD=$YOUR_PASSWORD heroku pg:pull $HEROKU_DATABASE $LOCAL_DATABASE [--app $APP]

为什么不备份?

捕获单独的备份只是为了获取最新的生产数据可能是最好的主意,因为Heroku会轮换备份,因此您将失去一个较旧的备份。这是否是一个问题取决于您的具体情况。

答案 1 :(得分:0)

您应该查看Heroku的Importing and Exporting Heroku Postgres Databases with PG Backups文章。

下载PG备份:

$ heroku pg:backups capture
$ curl -o latest.dump `heroku pg:backups public-url`

要恢复到本地数据库:

$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump

答案 2 :(得分:0)

$ heroku pg:backups capture -a app_name

这将在您的屏幕中回显

curl -oUse Ctrl-C at any time to stop monitoring progress; the backup
will continue running. Use heroku pg:backups info to check progress.
Stop a running backup with heroku pg:backups cancel.
DATABASE ---backup---> b001
Backup completed

然后您需要使用curl

下载转储
$ curl -o latest.dump `heroku pg:backups public-url -a app_name`

然后在PG中创建一个数据库并将转储导入到该数据库

$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U [username] -d [database name] latest.dump

实施例

$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U john -d new_dump_database_name latest.dump
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U john -d production-dump prod

现在配置Rails的Database.yml

development:
  <<: *default
  #  database: rails-app_development
  database: new_dump_database_name