在PostgreSQL中创建一个数据库的副本
将整个数据库(其结构和数据)复制到pgAdmin中的新数据库的正确方法是什么?
Postgres允许在创建新数据库时使用服务器上的任何现有数据库作为模板。 我不确定pgAdmin是否提供了创建数据库对话框的选项,但是如果没有,您应该可以在查询窗口中执行以下操作:
CREATE DATABASE newdb WITH TEMPLATE originaldb OWNER dbuser;
不过,你可能会得到:
ERROR: source database "originaldb" is being accessed by other users
要修复它,你可以使用这个查询
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'originaldb' AND pid <> pg_backend_pid();
贝尔的答案的命令行版本:
createdb -O ownername -T originaldb newdb
这应该在数据库主服务器的权限下运行,通常是postgres。
要用postgres克隆现有的数据库,你可以这样做
/* KILL ALL EXISTING CONNECTION FROM ORIGINAL DB (sourcedb)*/
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'SOURCE_DB' AND pid <> pg_backend_pid();
/* CLONE DATABASE TO NEW ONE(TARGET_DB) */
CREATE DATABASE TARGET_DB WITH TEMPLATE SOURCE_DB OWNER USER_DB;
IT将终止所有到源数据库的连接,避免出错
ERROR: source database "SOURCE_DB" is being accessed by other users
链接地址: http://www.djcxy.com/p/56961.html