在pgAdmin中将整个数据库(其结构和数据)复制到新数据库的正确方法是什么?
当前回答
PostgreSQL 9.1.2:
$ CREATEDB new_db_name -T orig_db_name -O db_user;
其他回答
在原始数据库处于流量状态的生产环境中,我只使用:
pg_dump production-db | psql test-db
要使用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
贝尔回答的命令行版本:
createdb -O ownername -T originaldb newdb
这应该在数据库主机(通常是postgres)的权限下运行。
以下是仅使用pgadmin4 GUI(通过备份和恢复)在数据库上创建复制的整个过程
Postgres附带Pgadmin4。如果你使用macOS,你可以按CMD+SPACE并键入pgadmin4来运行它。这将在chrome中打开一个浏览器选项卡。
复制步骤
1.创建备份
通过右键单击数据库->“备份”来执行此操作
2.为文件命名。
如测试12345。单击备份。这将创建一个二进制文件转储,它不是.sql格式
3.查看下载位置
屏幕右下角应该有一个弹出窗口。单击“更多详细信息”页面,查看备份下载到的位置
4.查找下载文件的位置
在本例中,它是/users/vincenttang
5.从pgadmin还原备份
假设您正确执行了步骤1到4,您将得到一个还原二进制文件。有时,您的同事可能希望在其本地计算机上使用您的还原文件。让此人转到pgadmin并恢复
通过右键单击数据库->“还原”来执行此操作
6.选择文件查找器
确保手动选择文件位置,不要将文件拖放到pgadmin中的上传器字段。因为您将遇到错误权限。相反,找到您刚刚创建的文件:
7.查找所述文件
您可能需要将右下角的筛选器更改为“所有文件”。此后,从步骤4查找文件。现在点击右下角的“选择”按钮确认
8.还原所述文件
您将再次看到此页面,其中选择了文件的位置。继续并恢复它
9.成功
如果一切正常,右下角将弹出一个指示器,显示成功恢复。您可以导航到表,查看每个表上的数据是否已正确还原。
10.如果不成功:
如果步骤9失败,请尝试删除数据库中的旧公共架构。转到“查询工具”
执行此代码块:
DROP SCHEMA public CASCADE; CREATE SCHEMA public;
现在再次尝试步骤5至9,应该会成功
编辑-一些附加说明。如果您在上传过程中遇到错误,在还原过程中出现类似“archiver header 1.14 unsupported version”的内容,请更新PGADMIN4
在pgAdmin中,您可以从原始数据库进行备份,然后只需创建一个新数据库并从刚刚创建的备份中恢复:
右键单击源数据库,备份。。。并转储到文件。右键单击,新建对象,新建数据库。。。并命名目的地。右键单击新数据库,还原。。。然后选择文件。
推荐文章
- Postgres唯一约束与索引
- 使用电子邮件地址为主键?
- 选择postgres中字段的数据类型
- 如何在PostgreSQL中查看视图的CREATE VIEW代码?
- 错误:没有唯一的约束匹配给定的键引用表"bar"
- 如何使用新的PostgreSQL JSON数据类型中的字段进行查询?
- 如何彻底清除和重新安装postgresql在ubuntu?
- 分组限制在PostgreSQL:显示每组的前N行?
- IN与PostgreSQL中的ANY运算符
- PSQLException:当前事务被中止,命令被忽略,直到事务块结束
- 添加布尔列到表集默认
- 库未加载:/usr/local/opt/readline/lib/libreadline.6.2.dylib
- 为什么我们需要像RabbitMQ这样的消息代理而不是像PostgreSQL这样的数据库?
- 在PostgreSQL表已经创建后,我可以添加UNIQUE约束吗?
- 如何在postgres数据库中创建单个表的备份?