2013-03-05 94 views
0

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

我一直在谷歌搜索几天关于这个,没有运气。而且我很确定这不是正确的方法,但是我现在所拥有的只是为了测试目的而给它一个镜头,你永远不会知道。

这么简单和简单,有没有什么办法可以只将外键导出到脚本,然后从脚本中恢复它们?

在此先感谢。

@Craig:当然克雷格下面是详细信息:

  • 机,我想恢复:在PostgreSQL 8.4.8在x86_64-红帽Linux的GNU的,由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位

导出命令:我使用的是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包括在内,但在测试机器上没有运气。

+2

请显示您用于转储数据库的确切命令以及您用于恢复的命令。你还应该指定你正在使用的PostgreSQL版本。 – 2013-03-05 13:51:47

+0

您确定源数据库确实定义了FK约束吗? – 2013-03-05 15:08:28

+0

@a_horse_with_no_name,是啊很确定,但似乎我解决了这个问题,我会在这里发布解决方案。手指交叉。 – raav6 2013-03-05 20:22:05

回答

1

好,here's解决我带着

我做了结构的备份只用下面的命令 pg_dump的-h 127.0.0.1 -p 5432 --no所有者-U -S ADempiere的ADempiere的> /home/adempiere/adempiere_bkp.sql

参数-s在这里

关键只恢复执行测试机上的以下COMAND

的psql -h 127.0.0.1 -p -d ADempiere的-U ADempiere的-f/{文件路径adempiere_bkp.sql}

瞧样样齐全再次!

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