2013-12-11 12 views

risposta

54

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 
+2

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 juanpaco

2

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' 
+1

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. –

+0

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

+0

@Jeff - controlla la mia risposta, non è necessario avere un DB locale o connettersi con PgAdmin, è possibile farlo facilmente tramite la riga di comando. – SergeyB

9

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)

+2

Grazie! Ovunque ho visto che dovevo caricare su S3. – sventechie

+1

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

Problemi correlati