我从Heroku下载了一个pg备份(它作为TextEdit文档出现),我想从我的开发环境运行它来测试一些东西。如何转换/保存它以便我可以更改我的database.yml文件来访问它?
答案 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连接提供用户名/密码,那么您可以通过PGUSER
和PGPASSWORD
这样传递:
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