web-dev-qa-db-fra.com

Comment puis-je télécharger db de heroku?

J'utilise heroku et je souhaite télécharger la base de données à partir de mon application (heroku) pour pouvoir y apporter quelques modifications. J'ai installé pgbackups, mais avec heroku pgbackups:url, télécharge un fichier .dump.

Comment puis-je télécharger un fichier postgresql ou traduire ce fichier .dump en fichier postgresql?

24
Sascuash

Si vous utilisez les pgbackups de Heroku (que vous devriez probablement utiliser):

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

"Traduire" dans une base de données postgres avec 

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

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

47
AlexQueue

Il y a une commande pour cela dans la CLI - heroku db:pull qui le fera pour vous. db:pull peut être un peu lent, il est donc préférable d’utiliser l’option suivante.

Si vous utilisez des types de données postgress complexes (hstore, tableaux, etc.), vous devez utiliser le plugin pgtransfer https://github.com/ddollar/heroku-pg-transfer qui effectuera une sauvegarde sur Heroku et a le restaure localement.

UPDATE: db:pull et db:Push sont obsolètes et doivent être remplacés par pg:pull et pg:Push - pour en savoir plus, consultez https://devcenter.heroku.com/articles/heroku-postgresql#pg-Push-and-pg-pull

14
John Beynon

J'ai trouvé la première méthode suggérée dans documentation tirer/Push encore plus facilement. Aucun mot de passe ou nom d'utilisateur requis.

pg: tirer

pg: pull peut être utilisé pour extraire des données distantes d'un Heroku Postgres base de données à une base de données sur votre machine locale. La commande ressemble à ce: 

$ heroku pg:pull HEROKU_POSTGRESQL_Magenta mylocaldb --app sushi

Cette commande créera une nouvelle base de données locale nommée “mylocaldb” et puis extraire les données de la base de données à DATABASE_URL à partir de l'application “sushi”. Dans Afin d’éviter les écrasements et pertes accidentels de données, le fichier la base de données ne doit pas exister. Vous serez invité à déposer un déjà base de données locale existante avant de continuer.

Au début, j'ai eu une erreur: /bin/sh: createdb: command not found; que j'ai résolu après ce SO post .


Une alternative décrite également dans la documentation (je ne l'ai pas encore essayée) est:

Pour exporter les données de votre base de données Heroku Postgres, créez un nouveau fichier sauvegarder et le télécharger.

$ heroku pg:backups:capture

$ heroku pg:backups:download

Source: Importation et exportation de bases de données Heroku Postgres avec des sauvegardes PG

2
J0ANMM

Je pense que le moyen le plus simple de télécharger et de répliquer la base de données sur un serveur local:

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

Parcourez ce document pour plus d'informations: https://devcenter.heroku.com/articles/heroku-postgresql#pg-Push-and-pg-pull

0
niraj