Use case: you have a database backup file, and need to import it to a running Postgres.
Debian automatically saves backups of all databases in /var/backup/postgres, let's restore them in a fresh instance of Postgres. This guide can thus be used when restoring service after a crash, migrating to another version of postgres or another server.
USER=foo DB=bar BACKUP=/var/backups/postgresql/20140412005701.residents.dump.tar.gz |
sudo -u postgres createuser ${USER} -P |
Notes:
sudo -u postgres createdb ${DB} -O ${USER} |
gunzip -c ${BACKUP} | pg_restore -h localhost --username=${USER} -d ${DB} -W |
The user's password (entered just previously) needs to be entered again.
sudo -u postgres psql << EOF ALTER ROLE ${USER} NOSUPERUSER; EOF |