在pgAdmin中将整个数据库(其结构和数据)复制到新数据库的正确方法是什么?
当前回答
新版本的pgAdmin(绝对是4.30)支持从模板创建新数据库。您只需要填充新的数据库名称和现有的模板数据库。
其他回答
用模板创建数据库新数据库originaldb所有者dbuser;
如果你使用过Ubuntu。1路createdb-O所有者-T old_db_name new_db_name
2路创建数据库测试副本pg_dump old_db_name | psql测试副本
对于那些仍然感兴趣的人,我提出了一个bash脚本,它(或多或少)满足了作者的需求。我必须在生产系统上制作一份每日业务数据库副本,这个脚本似乎很有用。请记住更改数据库名称/user/pw值。
#!/bin/bash
if [ 1 -ne $# ]
then
echo "Usage `basename $0` {tar.gz database file}"
exit 65;
fi
if [ -f "$1" ]
then
EXTRACTED=`tar -xzvf $1`
echo "using database archive: $EXTRACTED";
else
echo "file $1 does not exist"
exit 1
fi
PGUSER=dbuser
PGPASSWORD=dbpw
export PGUSER PGPASSWORD
datestr=`date +%Y%m%d`
dbname="dbcpy_$datestr"
createdbcmd="CREATE DATABASE $dbname WITH OWNER = postgres ENCODING = 'UTF8' TABLESPACE = pg_default LC_COLLATE = 'en_US.UTF-8' LC_CTYPE = 'en_US.UTF-8' CONNECTION LIMIT = -1;"
dropdbcmp="DROP DATABASE $dbname"
echo "creating database $dbname"
psql -c "$createdbcmd"
rc=$?
if [[ $rc != 0 ]] ; then
rm -rf "$EXTRACTED"
echo "error occured while creating database $dbname ($rc)"
exit $rc
fi
echo "loading data into database"
psql $dbname < $EXTRACTED > /dev/null
rc=$?
rm -rf "$EXTRACTED"
if [[ $rc != 0 ]] ; then
psql -c "$dropdbcmd"
echo "error occured while loading data to database $dbname ($rc)"
exit $rc
fi
echo "finished OK"
要使用postgres克隆现有数据库,您可以这样做
/* KILL ALL EXISTING CONNECTION FROM ORIGINAL DB (sourcedb)*/
SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity
WHERE pg_stat_activity.datname = 'SOURCE_DB' AND pid <> pg_backend_pid();
/* CLONE DATABASE TO NEW ONE(TARGET_DB) */
CREATE DATABASE TARGET_DB WITH TEMPLATE SOURCE_DB OWNER USER_DB;
IT将终止与源数据库的所有连接,以避免错误
ERROR: source database "SOURCE_DB" is being accessed by other users
第4页管理:
1.选择要复制的数据库并断开连接
右键单击“断开DB”
2.在旧数据库旁边创建新数据库:
给它起个名字。在“定义”选项卡中,选择第一个表格作为模板(下拉菜单)
点击create,然后左键单击新数据库以重新连接。
复制“欠载”数据库
我把这个方法和上面的例子拼凑在一起。我正在一台“负载不足”的服务器上工作,当我尝试使用@zbyszek的方法时出错。我也在寻求“仅限命令行”的解决方案。
createdb:数据库创建失败:错误:其他用户正在访问源数据库“exampledb”。
以下是对我有效的方法(命令前加nohup,以将输出移动到文件中并防止服务器断开连接):
nohup pg_dump示例b>example-01.sqlcreatedb-O postgres示例bclone_01我的用户是“postgres”nohup psql示例bclone_01<示例-01.sql
推荐文章
- 将varchar字段的类型更改为整数:"不能自动转换为整数类型"
- PostgreSQL可以索引数组列吗?
- PostgreSQL:角色不允许登录
- 如何查找Postgres / PostgreSQL表及其索引的磁盘大小
- 是使用各有一个模式的多个数据库更好,还是使用一个数据库有多个模式更好?
- 如果字符串包含
- 对于PostgreSQL表来说,多大才算太大?
- 将一列的多个结果行连接为一列,按另一列分组
- 使用pgadmin连接到heroku数据库
- 在PostgreSQL中快速发现表的行数
- 更改varchar列的大小为较低的长度
- 如何首次配置postgresql ?
- 数据库性能调优有哪些资源?
- 如何在PostgreSQL中自动更新时间戳
- 当使用JDBC连接到postgres时,是否可以指定模式?