PostgreSQL如何创建数据库或模式的副本?
在PostgreSQL 8.1中,有没有一种简单的方法来创建数据库或模式的副本PostgreSQL如何创建数据库或模式的副本?,sql,database,postgresql,Sql,Database,Postgresql,在PostgreSQL 8.1中,有没有一种简单的方法来创建数据库或模式的副本 我正在测试一些软件,这些软件对数据库中的特定模式进行大量更新,我想复制一份,以便与原始模式进行比较。使用--schema only选项 这里是一些备份和恢复的链接。您可以使用备份还原到不同的服务器或其他任何服务器。如果备份位于同一服务器上,只需使用带有模板参数的CREATE DATABASE命令即可。例如: CREATE DATABASE newdb WITH TEMPLATE olddb; 如果必须将架构从本地数
我正在测试一些软件,这些软件对数据库中的特定模式进行大量更新,我想复制一份,以便与原始模式进行比较。使用
--schema only
选项 这里是一些备份和恢复的链接。您可以使用备份还原到不同的服务器或其他任何服务器。如果备份位于同一服务器上,只需使用带有模板参数的CREATE DATABASE命令即可。例如:
CREATE DATABASE newdb WITH TEMPLATE olddb;
如果必须将架构从本地数据库复制到远程数据库,可以使用以下两个选项之一 选项A
pg_dump -U postgres -Cs database > dump_file
scp localuser@localhost:dump_file remoteuser@remotehost:dump_file
ssh remoteuser@remotehost
scp localuser@localhost:dump_file remoteuser@remotehost:dump_file
ssh remoteuser@remotehost
psql -U postgres database < dump_file
如果您想了解更多有关使用
pg_dump
复制数据库的选项,这可能会对您有所帮助。可以通过运行以下命令来完成此操作:
CREATE DATABASE [Database to create] WITH TEMPLATE [Database to copy] OWNER [Your username];
填写数据库名称和用户名后,将创建指定数据库的副本。只要没有其他与要复制的数据库的活动连接,这将起作用。如果存在其他活动连接,可以先使用以下命令临时终止连接:
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = '[Database to copy]'
AND pid <> pg_backend_pid();
选择pg\u terminate\u后端(pg\u stat\u activity.pid)
来自pg_统计_活动
其中pg_stat_activity.datname=“[要复制的数据库]”
和pid pg_backend_pid();
我为Chartio的数据学校写的一篇好文章更深入地介绍了如何做到这一点,可以在这里找到:
将“7.4”替换为“当前”,您将获得指向最新版本的链接。这还会将数据复制到新数据库中。。。在没有数据的情况下执行此操作的任何相关方法???或
$createdb-T olddb newdb
可能您会收到以下消息错误:“其他用户正在访问源数据库”olddb“。要解决此问题,请参见以下答案:。使用OWNER
设置新的数据库所有者:使用模板olddb OWNER new\u DB\u user创建数据库newdb代码>#3表示db_name
不存在。有没有一种方法可以从模式中恢复,而不必在先前的模式中创建数据库。