2013-06-10 4 views
24

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

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

ответ

44

Если вы используете 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

+0

pgbackups больше не существует, теперь это pg: backups. И нет pg: backups: url. – fotanus

+4

Первые две команды, по-видимому, являются дословными, но в третьем я должен был заменить myuser своим именем Postgres и 'mydb' именем базы данных, в которую я хотел бы расшифровать данные. – februaryInk

14

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

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

UPDATE: дБ: тянуть и дб: толчок устарели и должны быть заменены на стр: вытаскивать и пг: толчок - читать больше на https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull

+3

дБ: тянуть больше не работает, вы должны использовать стр: потянет. –

+0

Жаль, что я не смог бы это сделать. – liyicky

0

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

**PGUSER**=LOCAL_USER_NAME PGPASSWORD=LOCAL_PASSWORD heroku pg:pull --app APP_NAME HEROKU_POSTGRESQL_DB_NAME LOCAL_DB_NAME 

Go этот документ для получения дополнительной информации: https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull

1

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

pg:pull

pg:pull can be used to pull remote data from a Heroku Postgres database to a database on your local machine. The command looks like this:

$ heroku pg:pull HEROKU_POSTGRESQL_MAGENTA mylocaldb --app sushi

This command will create a new local database named “mylocaldb” and then pull data from database at DATABASE_URL from the app “sushi”. In order to prevent accidental data overwrites and loss, the local database must not exist. You will be prompted to drop an already existing local database before proceeding.

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


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

To export the data from your Heroku Postgres database, create a new backup and download it.

$ heroku pg:backups:capture 

$ heroku pg:backups:download 

Источник: Importing and Exporting Heroku Postgres Databases with PG Backups

Смежные вопросы