Para copiar una base, primero hay que tenerla sin usuarios conectados… los sacamos:
SELECT
pg_terminate_backend(pid)
–*
FROM
pg_stat_activity
WHERE
pid <> pg_backend_pid()
–and query = ‘COMMIT’
;
Luego, simplemente, creamos una nueva base con plantilla en la de origen:
CREATE DATABASE base_nueva WITH TEMPLATE base_vieja OWNER postgres;
Esto, la crea copiando base, estructura y datos.