Подтвердить что ты не робот

Как загрузить db из heroku?

Я использую heroku, и я хочу загрузить базу данных из своего приложения (heroku), чтобы внести в нее некоторые изменения, я установил pgbackups, но используя heroku pgbackups:url загружает файл .dump

Как загрузить файл postgresql или перевести этот .dump в файл postgresql?

4b9b3361

Ответ 1

Если вы используете Heroku pgbackups (который вы, вероятно, должны использовать):

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

"Перевести" его в postgres db с помощью

$ 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

Ответ 2

В CLI есть команда для этого - heroku db:pull которая сделает это за вас. db:pull может быть немного медленным, поэтому вам лучше использовать следующую опцию.

Если вы используете сложные типы данных postgress (hstore, arrays и т.д.), Вам необходимо использовать плагин 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- пг-вытяжная

Ответ 3

Я нашел первый метод, предложенный в документацию pull/push еще проще. Не требуется пароль или имя пользователя.

пг: тянуть

pg: pull можно использовать для вытаскивания удаленных данных из Postgres Heroku базы данных в базу данных на вашем локальном компьютере. Команда выглядит так: это:

$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi

Эта команда создаст новую локальную базу данных с именем "mylocaldb" и затем вытащите данные из базы данных в DATABASE_URL из приложения "суши". В чтобы предотвратить случайные записи и потери данных, локальные база данных не должна существовать. Вам будет предложено отказаться от уже существующей локальной базы данных, прежде чем продолжить.

Сначала у меня была ошибка: /bin/sh: createdb: command not found; который я решил после этого сообщения SO.


Альтернатива, описанная также в документации (я еще не пробовал ее):

Чтобы экспортировать данные из базы данных Heroku Postgres, создайте новую резервного копирования и загрузки.

$ heroku pg:backups:capture

$ heroku pg:backups:download

Источник: Импорт и экспорт баз данных Heroku Postgres с резервными копиями PG

Ответ 4

Я думаю, что самый простой способ загрузить и реплицировать базу данных на локальном сервере:

 **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

Ответ 5

Это сценарий, который мне нравится использовать.

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

Ответ 6

Чтобы экспортировать данные из базы данных Heroku Postgres, выполните следующие действия.

  1. Войти в Heroku
  2. Перейдите на APP-> настройки-> открыть переменную конфигурации
  3. Копировать DATABASE_URL
  4. запустите pg_dump --DATABASE_URL_COPIED_IN_STEP_3 > database_dump_file

Обратите внимание, что это будет файл postgresql или файл дампа, который можно загрузить непосредственно из интерфейса дополнения postgres.