2013-06-10 15 views
24

Używam Heroku i chcę pobrać bazę danych z mojej aplikacji (Heroku), więc mogę wprowadzić pewne zmiany w nim, mam zainstalowane pgbackups, ale przy użyciu heroku pgbackups:url pobiera plik .dumpJak mogę pobrać db z Heroku?

Jak mogę pobrać plik postgresql lub przetłumaczyć .dump na plik postgresql?

Odpowiedz

44

Jeśli używasz pgbackups Heroku (który prawdopodobnie powinien być używając):

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

"przetłumaczyć" go w PostgreSQL db z

$ pg_restore --verbose --clean --no-acl --no-owner -h localhost -U myuser -d mydb latest.dump 

Zobacz https://devcenter.heroku.com/articles/heroku-postgres-import-export

+0

pgbackups już nie istnieją, teraz wygląda na to, że pg: backups. I nie ma pg: backups: url. – fotanus

+4

Pierwsze dwa polecenia są dosłownie dosłowne, ale w trzecim musiałem zastąpić 'myuser' moją nazwą użytkownika Postgres i' mydb' nazwą bazy danych, do której chciałem dokonać transkrybowania danych. – februaryInk

14

Jest to polecenie w CLI - heroku db:pull, które zrobi to za Ciebie. db: pull może być trochę powolny, abyś mógł lepiej skorzystać z następnej opcji.

Jeśli używasz złożonych typów danych postresowych (hstore, tablice itp.), Musisz użyć wtyczki pgtransfer https://github.com/ddollar/heroku-pg-transfer, która wykona kopię zapasową na Heroku i przywróci ją lokalnie.

UPDATE: db: ciągnąć i db push są nieaktualne i powinny zostać zastąpione pg: ciągnąć i pg: Push - czytaj więcej na https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull

+3

db: ciągnąć już nie działa, trzeba użyć pg: pull. –

+0

Chciałbym móc to powtórzyć. – liyicky

1

znalazłem pierwsza metoda sugerowane w documentation pull/push jeszcze łatwiejsze . Brak hasła lub nazwy użytkownika.

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.

Na początku wystąpił błąd: /bin/sh: createdb: command not found; które rozwiązałem po this SO post.


Alternatywą opisano także w dokumentacji (nie próbowałem go jeszcze) jest:

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

$ heroku pg:backups:capture 

$ heroku pg:backups:download 

Źródło: Importing and Exporting Heroku Postgres Databases with PG Backups

Powiązane problemy