使用pg_restore还原表不包括主键或索引

问题描述 投票:3回答:1

所以我使用pg_dump备份了表:

pg_dump -U bob -F c -d commerce -t orders > orders.dump

此表有几个列出的索引,例如主键

但是,当我使用pg_restore将表还原到另一个系统上的开发数据库中时:

pg_restore -U bob -d commerce -t orders > orders.dump

未列出主键或索引

我在做什么错?

postgresql primary-key database-indexes pg-dump pg-restore
1个回答
0
投票

您没有做错任何事情,不幸的是pg_restore -t仅还原表,而不还原任何其他内容,无论您如何创建转储以及转储本身内部是什么。在V12 PostgreSQL docs中已经以某种方式阐明了这一点,它指出:

此标志的行为与pg_dump的-t标志不同。当前在pg_restore中没有任何通配符匹配的规定,也不能在其-t中包含模式名称。并且,虽然pg_dump的-t标志还将转储所选表的辅助对象(例如索引),但是pg_restore的-t标志不包括此类辅助对象。

确保恢复表将包含所有索引的唯一方法是通过名称来寻址它们,例如:

pg_restore -U bob -d commerce -t orders -I index1 -I index2 -I index3 > orders.dump
© www.soinside.com 2019 - 2024. All rights reserved.