How to restore to empty database

From: "Andrus" <kobruleht2(at)hot(dot)ee>
To: "pgsql-general" <pgsql-general(at)postgresql(dot)org>
Subject: How to restore to empty database
Date: 2020-01-30 22:23:15
Message-ID: D3F14323F35F4DC4BA3E517ED11199E1@dell2
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi!

I want to restore to new empty database using pg_restore .
pg_restore should create new empty database and restore into it.
If database exists, pg_restore should clean all data from it or drop and
create new empty database before restore.

According to pg_restore doc, switches --clean --create --if-exists should
do this.

I tried

PG_COLOR=auto
PGHOST=localhost
PGPASSWORD=mypass
PGUSER=postgres
export PGHOST PGPASSWORD PG_COLOR PGUSER
pg_restore --clean --create --if-exists --dbname=mydb --jobs=4 --verbose
"mydb.backup"

but got error

pg_restore: connecting to database for restore
pg_restore: error: connection to database "mydb" failed: FATAL: database
"mydb" does not exist

I also tried without --dbname=mydb but then got error

pg_restore: error: one of -d/--dbname and -f/--file must be specified

How to restore to database which does not exist to drop existing database
before restore if it exists ?
Should I invoke

drop database if exists

and

create database

commands before calling pg_restore or can pg_restore do it itself ?

Using Postgres 12 on Debian 10

Andrus.

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2020-01-30 22:31:23 Re: How to restore to empty database
Previous Message Adrian Klaver 2020-01-30 22:16:51 Re: Exclude constraint on ranges : commutative containment : allow only complete containment