Ho un file sql di backup da un altro database che voglio importare nel database postgres di Heroku. Come si fa a farlo?Come posso importare un file .sql nel mio database Heroku postgres?
risposta
Ecco come si fa:
heroku pg:psql --app YOUR_APP_NAME_HERE < updates.sql
E se si desidera ripristinare la vostra produzione in messa in scena (supponendo che entrambi sono Heroku Postgres DB):
heroku pgbackups:restore YOUR_STAGING_DATABASE_NAME `heroku pgbackups:url --app YOUR_PRODUCTION_APP_NAME` --app YOUR_STAGING_APP_NAME --confirm YOUR_STAGING_APP_NAME
Assicurati di conservare le virgolette singole speciali intorno a "heroku pgbackups: url --app YOUR_PRODUCTION_APP_NAME".
-------- Heroku Toolbelt AGGIORNAMENTO --------
Heroku ha recentemente aggiornato il suo cappello in modo che i vecchi comandi non sono più validi (vedi this link per maggiori informazioni). Di seguito è la nuova versione del comando di ripristino.
heroku pg:backups restore `heroku pg:backups public-url -a YOUR_PRODUCTION_APP_NAME` YOUR_STAGING_DATABASE_NAME --app YOUR_STAGING_APP_NAME --confirm YOUR_STAGING_APP_NAME
Nel primo esempio, se hai più di 1 database nell'app, puoi specificare il non predefinito (quello che non usa 'DATABASE_URL') facendo' heroku pg: psql HEROKU_POSTGRESQL_GREEN_URL --app YOUR_APP_NAME_HERE
Carica l'SQL in un'istanza Postgres locale e assicurati che sia corretto. Poi eseguire il dump dei dati utilizzando le istruzioni qui: https://devcenter.heroku.com/articles/heroku-postgres-import-export
Infine, caricare il dump su un server web pubblico (come S3) e il ripristino di Heroku in questo modo:
heroku pgbackups:restore DATABASE 'https://s3.amazonaws.com/me/items/3H0q/mydb.dump'
C'è un modo per farlo senza avere un database locale? Ho un file .sql con istruzioni SQL. Ha tutte le TABELLE CREATE e inserisce i dati. Ho solo bisogno di un modo per inviare quell'SQL su Postgres su Heroku. –
Sì, è possibile utilizzare PgAdmin per connettersi in remoto al database Heroku e incollarvi il codice SQL. Tuttavia, consiglio vivamente di impostare un database locale in modo da poter seguire i 12 principi dei fattori ed essere in grado di eseguire il debug localmente: http://12factor.net/ – dankohn
@Jeff - controlla la mia risposta, non è necessario avere un DB locale o connettersi con PgAdmin, è possibile farlo facilmente tramite la riga di comando. – SergeyB
Fare file di backup:
pg_dump -U USERNAME DATABASE --no-owner --no-acl -f backup.sql
Ripristino da file SQL per Heroku:
heroku pg:psql --app APPNAME < backup.sql
(Bonus) Eliminazione di tutte le tabelle di Heroku database di applicazione (esempio):
heroku pg:reset --app APPNAME HEROKU_POSTGRESQL_ROSE
ottiene DATABASE_URL da po Pannello sgresql Heroku (linea di psql)
Grazie! Ovunque ho visto che dovevo caricare su S3. – sventechie
---> Connessione a DATABASE_URL L'input è un dump di formato personalizzato PostgreSQL. Utilizzare il client della riga comandi pg_restore per ripristinare questo dump in un database. – Pak
Questa soluzione sarà anche rilevante per alcune persone: http://stackoverflow.com/questions/42433414/heroku-database-restore-issue/42435490#42435490 –