2013-04-03 30 views
0

我在同一台服务器上有两个数据库。一个名为A,另一个名为B. Booth数据库具有相同的结构。我想清空数据库B并使用数据库A中的数据加载它。哪种方法是最好的方法?PostgreSQL:如何备份名称为A的数据库并将其加载到名称为B的数据库?

我试图以普通格式备份数据库A.然后打开生成的sql文件并用'B'替换'A'的每一个出现,然后运行sql-script。这工作,但我认为它应该是一个更简单的方法将数据从一个数据库移动到另一个。是吗?

我使用'pgAdmin III'作为我的工具,但这不是必需的。

这是我在这里的第一篇文章,希望这个问题相关性和结构足够好。我首先尝试谷歌,但发现很难找到任何人有同样的问题。

在此先感谢! /大卫

解决方案:从克雷格的帮助后,我这是怎么做的

pg_dump -Fc -a -f a.dbbackup A 

psql -c 'TRUNCATE table1, table2, ..., tableX CASCADE' 

pg_restore dblive.backup -d B -c (not sure if -c was necessary) 

回答

1

备份:

pg_dump -Fc -f a.dbbackup 

还原:

psql -c 'CREATE DATABASE b;' 
pg_restore --dbname b a.dbbackup 

使用-U-h etc选项来连接正确的主机作为具有转储权限的正确用户,创建和恢复数据库。有关更多信息,请参阅psql,pg_dumppg_restore的文档(它们都采用相同的连接控制选项)。

+0

pg_restore:选项-d/- dbname和-f/- 文件不能一起使用 –

+0

@DavidBerg我的错误,修复了 –

+0

输入文件不需要标志。但我不知道我是否可以完全删除数据库,并重新创建它,就像在你的例子中那样(我假设你的意思是在创建语句之前我应该​​这样做)。我也试着用'-c'标志清理数据库,但似乎并不奏效,因为无论如何我都会得到'重复键值'的错误。 –

相关问题