在PostgreSQL中创建一个数据库的副本?

  • 回答 (2)
  • 关注 (0)
  • 查看 (86)

如何在pgAdmin中将整个数据库(其结构和数据)复制到新数据库的正确方法是什么?

0stargazer00stargazer0提问于
心愿回答于

命令行版本:

createdb -O ownername -T originaldb newdb

这应该在数据库主人的权限下运行,通常是postgres。

秋之夕颜清念念不忘,必有回响回答于

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();

扫码关注云+社区

领取腾讯云代金券