我正在使用heroku,我想从我的应用程序(heroku)下载数据库,以便我可以在其中进行一些更改,我已经安装了pgbackups,但使用heroku pgbackups:url下载.dump文件如何下载postgresql文件或将.dump转换为postgresql文件?
heroku pgbackups:url
uxh89sit1#
如果你正在使用Heroku的pgbackups(你可能应该使用它):
$ heroku pg:backups capture $ curl -o latest.dump `heroku pg:backups public-url`
将其“翻译”为postgres数据库,
$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump
参见https://devcenter.heroku.com/articles/heroku-postgres-import-export
vm0i2vca2#
在CLI中有一个命令-heroku db:pull可以为您执行此操作。db:pull可能有点慢,所以你最好使用下一个选项。如果你使用复杂的postgress数据类型(hstore,数组等),那么你需要使用pgtransfer插件https://github.com/ddollar/heroku-pg-transfer,它基本上会在Heroku上备份并在本地恢复。更新:db:pull和db:push已被弃用,应替换为pg:pull和pg:push-请访问https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull了解更多信息
heroku db:pull
db:pull
db:push
pg:pull
pg:push
lg40wkob3#
我发现文档中建议的第一种方法pull/push更容易。无需密码或用户名。pg:拉pg:pull可用于将远程数据从Heroku Postgres数据库拉到本地计算机上的数据库。命令看起来像这样:$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi此命令将创建一个名为“mylocaldb”的新本地数据库,然后从应用程序“sushi”中的DATABASE_URL数据库中提取数据。为了防止意外的数据覆盖和丢失,本地数据库必须不存在。系统将提示您在继续之前删除现有的本地数据库。一开始我犯了一个错误:/bin/sh: createdb: command not found;我在this SO post之后解决了这个问题。文档中描述的另一种方法(我还没有尝试过)是:要从Heroku Postgres数据库导出数据,请创建新的备份并下载它。
$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi
DATABASE_URL
/bin/sh: createdb: command not found
$ heroku pg:backups:capture $ heroku pg:backups:download
gev0vcfq4#
要从Heroku Postgres数据库导出数据,只需按照以下步骤操作1.登录Heroku1.进入APP->设置->显示配置变量1.复制数据库_URL1.运行pg_dump --DATABASE_URL_COPIED_IN_STEP_3 > database_dump_file注意这将提供postgresql文件或转储文件,你可以直接从postgres插件界面下载。
pg_dump --DATABASE_URL_COPIED_IN_STEP_3 > database_dump_file
waxmsbnn5#
我认为最简单的方法来下载和复制本地服务器上的数据库:
**PGUSER**=LOCAL_USER_NAME PGPASSWORD=LOCAL_PASSWORD heroku pg:pull --app APP_NAME HEROKU_POSTGRESQL_DB_NAME LOCAL_DB_NAME
浏览此文档以获取更多信息:https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull
zxlwwiss6#
这是我喜欢使用的脚本。
namespace :heroku do desc "Import most recent database dump" task :import_from_prod => :environment do puts 'heroku run pg:backups capture --app APPNAME' restore_backup 'APPNAME' end def path_to_heroku ['/usr/local/heroku/bin/heroku', '/usr/local/bin/heroku'].detect {|path| File.exists?(path)} end def heroku(command, site) `GEM_HOME='' BUNDLE_GEMFILE='' GEM_PATH='' RUBYOPT='' #{path_to_heroku} #{command} -a #{site}` end def restore_backup(site = 'APPNAME') dump_file = "#{Rails.root}/tmp/postgres.dump" unless File.exists?(dump_file) pgbackups_url = heroku('pg:backups public-url -q', site).chomp puts "curl -o #{dump_file} #{pgbackups_url}" system "curl -o #{dump_file} '#{pgbackups_url}'" end database_config = YAML.load(File.open("#{Rails.root}/config/database.yml")).with_indifferent_access dev_db = database_config[Rails.env] system "pg_restore -d #{dev_db[:database]} -c #{dump_file}".gsub(/\s+/,' ') puts puts "'rm #{dump_file}' to redownload postgres dump." puts "Done!" end end
np8igboo7#
一个简单的heroku pg:pull DATABASE local-db-name -a app-name就可以了。警告:我的意思是“数据库”这个词,而不是数据库的名称或任何花哨的东西。如果您在之前运行rake db:drop,它将显示您的本地数据库名称,应该类似于ABC_development。
heroku pg:pull DATABASE local-db-name -a app-name
rake db:drop
ABC_development
7条答案
按热度按时间uxh89sit1#
如果你正在使用Heroku的pgbackups(你可能应该使用它):
将其“翻译”为postgres数据库,
参见https://devcenter.heroku.com/articles/heroku-postgres-import-export
vm0i2vca2#
在CLI中有一个命令-
heroku db:pull
可以为您执行此操作。db:pull
可能有点慢,所以你最好使用下一个选项。如果你使用复杂的postgress数据类型(hstore,数组等),那么你需要使用pgtransfer插件https://github.com/ddollar/heroku-pg-transfer,它基本上会在Heroku上备份并在本地恢复。
更新:
db:pull
和db:push
已被弃用,应替换为pg:pull
和pg:push
-请访问https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull了解更多信息lg40wkob3#
我发现文档中建议的第一种方法pull/push更容易。无需密码或用户名。
pg:拉
pg:pull可用于将远程数据从Heroku Postgres数据库拉到本地计算机上的数据库。命令看起来像这样:
$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi
此命令将创建一个名为“mylocaldb”的新本地数据库,然后从应用程序“sushi”中的
DATABASE_URL
数据库中提取数据。为了防止意外的数据覆盖和丢失,本地数据库必须不存在。系统将提示您在继续之前删除现有的本地数据库。一开始我犯了一个错误:
/bin/sh: createdb: command not found
;我在this SO post之后解决了这个问题。文档中描述的另一种方法(我还没有尝试过)是:
要从Heroku Postgres数据库导出数据,请创建新的备份并下载它。
gev0vcfq4#
要从Heroku Postgres数据库导出数据,只需按照以下步骤操作
1.登录Heroku
1.进入APP->设置->显示配置变量
1.复制数据库_URL
1.运行
pg_dump --DATABASE_URL_COPIED_IN_STEP_3 > database_dump_file
注意这将提供postgresql文件或转储文件,你可以直接从postgres插件界面下载。
waxmsbnn5#
我认为最简单的方法来下载和复制本地服务器上的数据库:
浏览此文档以获取更多信息:https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull
zxlwwiss6#
这是我喜欢使用的脚本。
np8igboo7#
一个简单的
heroku pg:pull DATABASE local-db-name -a app-name
就可以了。警告:我的意思是“数据库”这个词,而不是数据库的名称或任何花哨的东西。如果您在之前运行
rake db:drop
,它将显示您的本地数据库名称,应该类似于ABC_development
。