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


当前回答

首先,sudo作为数据库用户:

sudo su postgres

转到PostgreSQL命令行:

psql

创建新数据库,授予权限并退出:

CREATE DATABASE new_database_name;
GRANT ALL PRIVILEGES ON DATABASE new_database_name TO my_user;
\d

将结构和数据从旧数据库复制到新数据库:

pg_dump old_database_name | psql new_database_name

其他回答

第4页管理:

1.选择要复制的数据库并断开连接

右键单击“断开DB”

2.在旧数据库旁边创建新数据库:

给它起个名字。在“定义”选项卡中,选择第一个表格作为模板(下拉菜单)

点击create,然后左键单击新数据库以重新连接。

如果要复制整个模式,可以使用以下命令生成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”

贝尔回答的命令行版本:

createdb -O ownername -T originaldb newdb

这应该在数据库主机(通常是postgres)的权限下运行。

在pgAdmin中,您可以从原始数据库进行备份,然后只需创建一个新数据库并从刚刚创建的备份中恢复:

右键单击源数据库,备份。。。并转储到文件。右键单击,新建对象,新建数据库。。。并命名目的地。右键单击新数据库,还原。。。然后选择文件。

复制“欠载”数据库

我把这个方法和上面的例子拼凑在一起。我正在一台“负载不足”的服务器上工作,当我尝试使用@zbyszek的方法时出错。我也在寻求“仅限命令行”的解决方案。

createdb:数据库创建失败:错误:其他用户正在访问源数据库“exampledb”。

以下是对我有效的方法(命令前加nohup,以将输出移动到文件中并防止服务器断开连接):

nohup pg_dump示例b>example-01.sqlcreatedb-O postgres示例bclone_01我的用户是“postgres”nohup psql示例bclone_01<示例-01.sql