2013-06-10 16 views
24

ich Heroku bin mit und ich möchte die Datenbank von meiner app (Heroku) zum Download so kann ich einige Änderungen daran machen, ich pgbackups installiert haben, aber mit heroku pgbackups:url lädt eine Datei .dumpWie kann ich db von heroku herunterladen?

Wie kann ich Laden Sie eine Postgresql-Datei herunter oder übersetzen Sie diese .dump in eine Postgresql-Datei?

Antwort

44

Wenn Sie mit Heroku des pgbackups (die Sie wahrscheinlich sein sollte verwenden):

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

"Übersetzen" in ein postgres db mit

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

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

+0

pgbackups existieren nicht mehr, jetzt scheint es pg: backups zu sein. Und es gibt keine PG: Backups: URL. – fotanus

+4

Die ersten beiden Befehle sind anscheinend wörtlich, aber in der dritten, musste ich 'myuser' durch meinen Postgres Benutzernamen und' mydb' durch den Namen der Datenbank ersetzen, in die ich die Daten übertragen wollte. – februaryInk

14

Es gibt einen Befehl dafür in der CLI - heroku db:pull, die dies für Sie tun wird. db: pull kann ein wenig langsam sein, aber Sie können besser die nächste Option verwenden.

Wenn Sie komplexe Postgreß-Datentypen (hstore, arrays usw.) verwenden, müssen Sie das pgtransfer-Plugin https://github.com/ddollar/heroku-pg-transfer verwenden, das grundsätzlich eine Sicherung auf Heroku erstellt und lokal wiederherstellt.

UPDATE: db: ziehen und db: Push gelten als veraltet und sollte mit pg ersetzt werden: Ziehen und pg: push - mehr dazu bei https://devcenter.heroku.com/articles/heroku-postgresql#pg-push-and-pg-pull

+3

db: Ziehen Sie nicht mehr funktioniert, müssen Sie verwenden pg: ziehen. –

+0

Ich wünschte, ich könnte das noch einmal aufdrängen. – liyicky

1

ich das erste Verfahren fand sogar in den documentation pull/push vorgeschlagen leichter . Kein Passwort oder Benutzername benötigt.

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.

Zuerst hatte ich einen Fehler: /bin/sh: createdb: command not found; was ich nach this SO post gelöst habe.


Eine Alternative auch in der Dokumentation beschrieben (ich habe es noch nicht versucht) ist:

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

$ heroku pg:backups:capture 

$ heroku pg:backups:download 

Quelle: Importing and Exporting Heroku Postgres Databases with PG Backups

Verwandte Themen