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


当前回答

新版本的pgAdmin(绝对是4.30)支持从模板创建新数据库。您只需要填充新的数据库名称和现有的模板数据库。

其他回答

复制“欠载”数据库

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

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

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

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

新版本的pgAdmin(绝对是4.30)支持从模板创建新数据库。您只需要填充新的数据库名称和现有的模板数据库。

PostgreSQL 9.1.2:

$ CREATEDB new_db_name -T orig_db_name -O db_user;

创建数据库转储

cd /var/lib/pgsql/
pg_dump database_name> database_name.out

重新记录数据库转储

psql -d template1
CREATE DATABASE database_name WITH  ENCODING 'UTF8' LC_CTYPE 'en_US.UTF-8' LC_COLLATE 'en_US.UTF-8' TEMPLATE template0;
CREATE USER  role_name WITH PASSWORD 'password';
ALTER DATABASE database_name OWNER TO role_name;
ALTER USER role_name CREATEDB;
GRANT ALL PRIVILEGES ON DATABASE database_name to role_name;


CTR+D(logout from pgsql console)
cd /var/lib/pgsql/

psql -d database_name -f database_name.out

不知道pgAdmin,但pgdump为您提供了SQL中数据库的转储。您只需要使用相同的名称创建数据库

psql mydatabase < my dump

以恢复所有表及其数据和所有访问权限。