PostgreSQL以已有数据库为模板快速创建数据库

情景引入

很多时候,新项目创建数据库,是从已有的数据库拷贝而来。下面分享一个PostgreSQL非常简单便捷的以已有数据库为模板快速创建新数据库的方法。

虽然看起来我的文章写得挺长的,但是其实操作真的就是简单的几步。请耐心阅读。

创建过程

  • 创建用户和表空间(根据需求,也可以用已有的用户和表空间)
  • 打开创建数据库窗口
  • 填写常规信息
  • 选择定义参数
  • 断开所有连接用户,保存提交

具体操作

本文通过克隆已有的数据库product,创建一个新的数据库newdb

创建用户和表空间

首先,如果新数据库需要新的用户和表空间,那么先创建好相应的用户和表空间。这里就不描述如何创建用户和表空间了,我就用PostgreSQL默认的用户postgres和表空间pg_default来演示。

打开创建数据库窗口

在PostgreSQL自带的工具pgAdmin中选择相应的数据库位置,右键选择创建数据库,打开创建数据库窗口

PostgreSQL以已有数据库为模板快速创建数据库

填写常规信息

如图,填写数据库名称newdb,选择所有者postgres,填写备注信息。
PostgreSQL以已有数据库为模板快速创建数据库

选择定义参数

选择编码为UTF-8,模板为要拷贝的数据库product,选择需要的表空间,其他默认即可。
PostgreSQL以已有数据库为模板快速创建数据库

断开所有用户连接,保存提交

设置好上面的信息后,点击保存按钮,即可创建新的数据库。但是一般情况下会报错:其他用户正在访问源数据库。所以需要先断开所有用户连接。
PostgreSQL以已有数据库为模板快速创建数据库
保持创建数据库窗口存在(不要关闭)。在要复制的数据库上右键选择查询工具,在打开的查询窗口中执行下面SQL语句。会弹出警告窗口,警告当前数据库连接已断开,点击取消关闭警告窗口即可。查询工具界面消息显示到服务器的连接已丢失

SELECT pg_terminate_backend(pg_stat_activity.pid)  

FROM pg_stat_activity  

WHERE datname='dbname'

PostgreSQL以已有数据库为模板快速创建数据库
然后点击之前的创建数据库窗口的保存按钮进行保存。稍等片刻,就会完成新数据库的创建,在左侧的数据库目录树上可以看到新创建的数据库newdb。可以看到newdb数据库拥有了product数据库的所有数据。
PostgreSQL以已有数据库为模板快速创建数据库