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


当前回答

如果数据库具有打开的连接,则此脚本可能会有所帮助。我每天晚上都用这个从实时生产数据库的备份中创建一个测试数据库。这假设您有一个来自生产数据库的.SQL备份文件(我在webmin中执行此操作)。

#!/bin/sh

dbname="desired_db_name_of_test_enviroment"
username="user_name"
fname="/path to /ExistingBackupFileOfLive.sql"

dropdbcmp="DROP DATABASE $dbname"
createdbcmd="CREATE DATABASE $dbname WITH OWNER = $username "

export PGPASSWORD=MyPassword



echo "**********"
echo "** Dropping $dbname"
psql -d postgres -h localhost -U "$username" -c "$dropdbcmp"

echo "**********"
echo "** Creating database $dbname"
psql -d postgres -h localhost -U "$username" -c "$createdbcmd"

echo "**********"
echo "** Loading data into database"
psql -d postgres -h localhost -U "$username" -d "$dbname" -a -f "$fname"

其他回答

用模板创建数据库新数据库originaldb所有者dbuser;

如果你使用过Ubuntu。1路createdb-O所有者-T old_db_name new_db_name

2路创建数据库测试副本pg_dump old_db_name | psql测试副本

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

psql mydatabase < my dump

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

首先,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

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

试试看:

CREATE DATABASE newdb WITH ENCODING='UTF8' OWNER=owner TEMPLATE=templatedb LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' CONNECTION LIMIT=-1;

gl XD公司