#!/usr/bin/env ruby
require_relative '../config/environment'
# Uncomment the line below if you want to generate a new snapshot of the
# Heroku production database before downloading it to the local machine
# `heroku pg:backups capture`
database_dump_file_pathname = Tempfile.new('latest.dump').path
`heroku pg:backups:download --output #{database_dump_file_pathname}`
# Get database config fom database.yml file
database_config = YAML::load_file(Rails.root.join('config', 'database.yml'))
database_name = database_config['development']['database']
database_username = database_config['development']['username']
database_password = database_config['development']['password']
# Overwrite local database with dump
cmd_line_arguments = [
'--verbose',
'--clean',
'--no-acl',
'--no-owner',
'--host localhost',
"-U #{database_username}",
"-d #{database_name}",
database_dump_file_pathname
].join(' ')
`PGPASSWORD=#{database_password} pg_restore #{cmd_line_arguments}`
6条答案
按热度按时间44u64gxh1#
使用Heroku的“pg:pull”:
您需要清除本地DB:
然后从Heroku那里收集一些信息:
这将连接到heroku DB,并将其复制到本地数据库。
请参阅pg:pull上的Heroku文档以了解更多详细信息。
woobm2wo2#
此命令应执行以下操作:
bmvo0sr53#
清理本地数据库:
转储heroku数据库:
将数据装入本地数据库
kdfy810k4#
这是我怎么做的,一定要gzip它作为您的数据库增长。也不要导出ACL,因为你可能没有相同的postgres用户对heroku和本地帐户。替换为您的具体细节。
093gszye5#
使用您的终端生成一个本地
pg_dump
,然后将其psql
或pg_restore
导入您的本地数据库。类似的方法可以在这里找到。
hgncfbus6#
如果这是一个Rails应用程序,你可以使用下面的脚本,用你在Heroku上生成的最新转储覆盖你的本地数据库。如果你用
heroku pg:backups capture
取消注解该行,脚本将在Heroku上生成一个新的快照,然后再下载到你的机器上。请注意,您不需要编辑脚本,因为它会从数据库.yml文件中读取所有配置。
有关下载数据库备份的详细信息,请参阅Heroku文档。