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

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

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

4 ответов


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

$ 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


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

Если вы используете сложные типы данных postgress (hstore, массивы и т. д.), Вам нужно использовать плагин pgtransferhttps://github.com/ddollar/heroku-pg-transfer который в основном делает резервную копию на Heroku и восстанавливает ее локально.

UPDATE: db: pull и db:push устарели и следует заменить на pg: pull и pg: push - подробнее на https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull


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

pg: потяните

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

$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi

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

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


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

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

$ heroku pg:backups:capture

$ heroku pg:backups:download

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


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

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