What’s the correct way to copy entire database (its structure and data) to a new one in pgAdmin?

2Best Answer
21

Postgres allows the use of any existing database on the server as a template when creating a new database. I’m not sure whether pgAdmin gives you the option on the create database dialog but you should be able to execute the following in a query window if it doesn’t:

CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;

Still, you may get:

ERROR:  source database "originaldb" is being accessed by other users

To disconnect all other users from the database, you can use this query:

SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity 
WHERE pg_stat_activity.datname="originaldb" AND pid <> pg_backend_pid();

Tags:

Leave a Reply

Your email address will not be published. Required fields are marked *