Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I import a .sql file into my Heroku postgres database?

I have a backup sql file from another database that I want to import into Heroku's postgres database. How do you do that?

like image 851
Some Guy Avatar asked Dec 11 '13 01:12

Some Guy


People also ask

How do I import data into Heroku Postgres?

Import to Heroku Postgres In order for PG Backups to access and import your dump file you will need to upload it somewhere with an HTTP-accessible URL. We recommend using Amazon S3 with a signed url. Note that the pg:backups restore command drops any tables and other database objects before recreating them.


2 Answers

This is how you do it:

heroku pg:psql --app YOUR_APP_NAME_HERE < updates.sql 

And if you want to restore your production into staging (assuming both are heroku postgres DBs):

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 

Make sure to preserve the special single quotes around heroku pgbackups:url --app YOUR_PRODUCTION_APP_NAME.


HEROKU TOOLBELT UPDATE

Heroku has recently updated their toolbelt so the old commands are no longer valid (see this link for more info). Below is the new version of the restore command.

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 
like image 183
SergeyB Avatar answered Sep 21 '22 01:09

SergeyB


Making backup file:

pg_dump -U USERNAME DATABASE --no-owner --no-acl -f backup.sql  

Restoring from sql file to heroku :

heroku pg:psql --app APPNAME < backup.sql  

(Bonus) Deleting all tables from heroku app database (example):

heroku pg:reset --app APPNAME HEROKU_POSTGRESQL_ROSE 

get DATABASE_URL from posgresql heroku panel (psql line)

like image 33
Abel Avatar answered Sep 20 '22 01:09

Abel