所以我使用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
未列出主键或索引
我做错了什么?
答案 0 :(得分: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