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


当前回答

使用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

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

答覆:

CREATE DATABASE newdb WITH TEMPLATE originaldb;

经过尝试和测试。

创建数据库转储

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,断开要用作模板的数据库。然后选择它作为创建新数据库的模板,这样可以避免出现已在使用中的错误。

贝尔回答的命令行版本:

createdb -O ownername -T originaldb newdb

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