在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"
其他回答
在pgAdmin中打开主窗口,然后打开另一个查询工具窗口在pgAdmin的主窗口中,
断开要用作模板的“模板化”数据库。
转到查询工具窗口
运行2个查询,如下所示
SELECT pg_terminate_backend(pg_stat_activity.pid)
FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'TemplateDB' AND pid <> pg_backend_pid();
(上面的SQL语句将终止与TemplateDB的所有活动会话,然后您现在可以选择它作为模板来创建新的TargetDB数据库,这样可以避免出现已在使用的错误。)
CREATE DATABASE 'TargetDB'
WITH TEMPLATE='TemplateDB'
CONNECTION LIMIT=-1;
第4页管理:
1.选择要复制的数据库并断开连接
右键单击“断开DB”
2.在旧数据库旁边创建新数据库:
给它起个名字。在“定义”选项卡中,选择第一个表格作为模板(下拉菜单)
点击create,然后左键单击新数据库以重新连接。
如果数据库具有打开的连接,则此脚本可能会有所帮助。我每天晚上都用这个从实时生产数据库的备份中创建一个测试数据库。这假设您有一个来自生产数据库的.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"
贝尔回答的命令行版本:
createdb -O ownername -T originaldb newdb
这应该在数据库主机(通常是postgres)的权限下运行。
使用pgAdmin,断开要用作模板的数据库。然后选择它作为创建新数据库的模板,这样可以避免出现已在使用中的错误。
推荐文章
- 将一列的多个结果行连接为一列,按另一列分组
- 使用pgadmin连接到heroku数据库
- 在PostgreSQL中快速发现表的行数
- 更改varchar列的大小为较低的长度
- 如何首次配置postgresql ?
- 数据库性能调优有哪些资源?
- 如何在PostgreSQL中自动更新时间戳
- 当使用JDBC连接到postgres时,是否可以指定模式?
- SQL:从时间戳日期减去1天
- PostgreSQL删除所有内容
- 为什么PostgreSQL要对索引列进行顺序扫描?
- PostgreSQL INSERT ON冲突更新(upsert)使用所有排除的值
- 如何检查一个表是否存在于给定的模式中
- 如何将整数转换为字符串作为PostgreSQL查询的一部分?
- Psycopg2:用一个查询插入多行