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