在pgAdmin中将整个数据库(其结构和数据)复制到新数据库的正确方法是什么?
当前回答
如果要复制整个模式,可以使用以下命令生成pg_dump:
pg_dump-h database.host.com-d数据库名-n schema_name-U数据库用户--密码
当您想要导入该转储时,可以使用:
psql“host=database.host.com user=database_user password=database_password dbname=database_name options=--search_path=schema_name”-f sql_dump_to_import.sql
有关连接字符串的详细信息:https://www.postgresql.org/docs/current/libpq-connect.html#LIBPQ-连接字符串
或者只需将其组合成一行:
pg_dump -h database.host.com -d postgres -n schema_name -U database_user --password | psql "host=database.host.com user=database_user password=database_password dbname=database_name options=--search_path=schema_name”
其他回答
在原始数据库处于流量状态的生产环境中,我只使用:
pg_dump production-db | psql test-db
以下是仅使用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
贝尔回答的命令行版本:
createdb -O ownername -T originaldb newdb
这应该在数据库主机(通常是postgres)的权限下运行。
在pgAdmin中,您可以从原始数据库进行备份,然后只需创建一个新数据库并从刚刚创建的备份中恢复:
右键单击源数据库,备份。。。并转储到文件。右键单击,新建对象,新建数据库。。。并命名目的地。右键单击新数据库,还原。。。然后选择文件。
PostgreSQL 9.1.2:
$ CREATEDB new_db_name -T orig_db_name -O db_user;
推荐文章
- 查询JSON类型内的数组元素
- 获得PostgreSQL数据库中当前连接数的正确查询
- 纬度和经度的数据类型是什么?
- 如何在PostgreSQL中临时禁用触发器?
- 输入文件似乎是一个文本格式转储。请使用psql
- 使用LIMIT/OFFSET运行查询,还可以获得总行数
- 当恢复sql时,psql无效命令\N
- 货币应该使用哪种数据类型?
- 如何添加列,如果不存在PostgreSQL?
- 如何在Postgres中获得两个字段的MIN() ?
- 截断Postgres数据库中的所有表
- 如何连接列在Postgres选择?
- 将varchar字段的类型更改为整数:"不能自动转换为整数类型"
- PostgreSQL可以索引数组列吗?
- PostgreSQL:角色不允许登录