Postgresql:使用主键备份和还原某些表

Postgresql:使用主键备份和还原某些表,postgresql,Postgresql,我有一个生产Postgresql数据库,它由70个表组成。它们有的很大,有的很小。我的本地机器上有我的本地Postgresql数据库。我想使一些本地数据库表的内容与生产数据库表的内容相同。若我只是在生产数据库上用pgAdmin备份一些表,然后尝试在本地计算机上恢复,那个么我会遇到约束错误。因为例如表A有表B的外键等等 如何从生产数据库复制一些表,并在本地机器上正常恢复,因为本地机器已经有scheme和表,并且没有约束错误 另外,我不能只转储所有的生产数据库,因为有些表非常大,我不确定我是否理解,

我有一个生产Postgresql数据库,它由70个表组成。它们有的很大,有的很小。我的本地机器上有我的本地Postgresql数据库。我想使一些本地数据库表的内容与生产数据库表的内容相同。若我只是在生产数据库上用pgAdmin备份一些表,然后尝试在本地计算机上恢复,那个么我会遇到约束错误。因为例如表A有表B的外键等等

如何从生产数据库复制一些表,并在本地机器上正常恢复,因为本地机器已经有scheme和表,并且没有约束错误


另外,我不能只转储所有的生产数据库,因为有些表非常大,我不确定我是否理解,但如果出现约束检查错误,可以禁用外键约束,恢复表并再次启用它们。

转储完整的生产数据库,但如果是大型表,则没有数据:

$ pg_dump -t <VERY_BIG_TABLE_NAME> -s
  • 在本地数据库中重新创建表结构,但向有问题的外键添加
    DEFERRABLE INITIALLY DEFERRED
    选项
    CONSTRAINT
    s
  • 使用pg_dump将所选表数据从生产数据库转储到文件,并在最开始写入:
    BEGIN。在文件末尾追加:
    
    updatetable problem\u no\u 1 SET fkey\u column=NULL
    用于每个导致问题的FK列,当然还有
    提交在末尾
  • 在本地数据库上执行此文件
  • $ pg_dump -n <SCHEMA_NAME_WITH_VERY_BIG_TABLES> -s
    $ pg_dump -n <SCHEMA_NAME_WITH_SMALL_TABLES>