在postgresql中只导出外键

时间:2013-03-05 13:46:01

标签: postgresql foreign-keys database-restore

我有一个大型数据库,有700多个表,大小约为。 23GB并且我正在尝试将此数据库导出到测试环境,事情就是当我执行恢复它不包括任何外键约束时,此刻我无法弄清楚为什么确切但似乎数据本身是正确的,所有表,PK,函数和视图也都被恢复,所以唯一剩下的是外键,postgres日志不会显示错误。

我一直在谷歌上搜索这几天,没有运气。而且我很确定这不是正确的方法,但我现在已经完成所有这些,所以我只是为测试目的而试一试,你永远不会知道。

如此简单明了,有什么方法可以只将外键导出到脚本然后从这个脚本中恢复它们?

提前致谢。

@Craig:肯定克雷格在这里是详细信息:

  • 我要恢复的机器:x86_64-redhat-linux-gnu上的PostgreSQL 8.4.8,由GCC gcc(GCC)4.1.2 20080704(Red Hat 4.1.2-48)编译,64位
  • 我做原始备份的机器:x86_64-redhat-linux-gnu上的PostgreSQL 8.4.13,由GCC gcc(GCC)4.4.6 2 0120305(Red Hat 4.4.6-4)编译,64位< / LI>

导出命令:我正在使用Adepmpiere Adempiere Wiki,它包含了自己的DBExport和DBRestore脚本。
DBExport脚本具有以下命令:

pg_dump -h 127.0.0.1 -p 5432 --no-owner -U adempiere adempiere > /home/adempiere/adempiere.sql

DBRestore有以下几行:

psql -h 127.0.0.1 -p 5432 -d adempiere -U adempiere -f /home/adempiere/adempiere.sql

我能够在笔记本电脑上的虚拟机上恢复此脚本,并恢复了FK所包含的所有内容,但在测试机器上没有运气。

1 个答案:

答案 0 :(得分:2)

嗯,这是我带来的解决方案

我只使用以下命令对结构进行了备份 pg_dump -h 127.0.0.1 -p 5432 --no-owner -U -s adempiere adempiere&gt; /home/adempiere/adempiere_bkp.sql

参数-s是这里的关键

要恢复,只需在测试计算机上执行以下命令

psql -h 127.0.0.1 -p -d adempiere -U adempiere -f / {PATH TO FILE adempiere_bkp.sql}

瞧,一切都完整了!。

希望它可以帮助别人。 谢谢你的帮助。