Skip to content

Instantly share code, notes, and snippets.

@isogram
Created September 3, 2018 08:52
Show Gist options
  • Save isogram/16cf711dfce70a6fb034f7a15d18683d to your computer and use it in GitHub Desktop.
Save isogram/16cf711dfce70a6fb034f7a15d18683d to your computer and use it in GitHub Desktop.
PostgreSQL duplicate database with data

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 fix it 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();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment