psql empty database before restore

17,329

Solution 1

There are two options here - if your backup is plain text then you add the -c option to pg_dump - ie

pg_dump -c mydb > mydb.sql

Otherwise if your using -Fc or -Ft on pg_dump then you use the -c flag on pg_restore

pg_dump -Ft -b mydb > db.tar

pg_restore -c -d newdb db.tar

Solution 2

Assuming you're talking about restoring from a pg_dump backup the answer is "it depends on how the backup was made", but typically yes: You must empty the database before restoring the backup.

The fastest way to empty out a database in Postgres is to drop and re-create the database (you'll probably need superuser privileges for that), otherwise you have to manually drop each table and any stored procedures you may have (CASCADE is your friend here).

Share:
17,329

Related videos on Youtube

aleroot
Author by

aleroot

I used to hate C++ until I suddenly fell in love with it :-)

Updated on September 17, 2022

Comments

  • aleroot
    aleroot about 1 year

    I want to restore a database of postgreSQL, but before do it i need to empty the restore target database.

    Is there an option of psql to do it ?

    Now i use a command line as the following :

    psql -U postgres db_test < testdb.sql
    
  • aleroot
    aleroot over 13 years
    is there a way of do a backup with pg_dump that when i restore it, first erase the destination db and then restore the data ? Thanks
  • Neil C. Obremski
    Neil C. Obremski about 2 years
    I use --clean and --if-exists arguments on both pg_dump and pg_restore which works really well, but I'm also using the --format=c (custom) output format rather than a dump SQL statements. I'm also using PostgreSQL 12 and this question/answer is a bit older than that!