如何从PostgreSQL合并转储到数据库?

时间:2013-11-25 08:38:24

标签: postgresql pg-dump

我正在不同的机器(PostgreSQL)上使用相同的数据库模式。我想知道,如何将数据从一台机器合并到另一台机器。 Schema有很多表(大约10个)。我想要实现什么目标?

  1. 将数据从机器A转储到文件A.dmp
  2. 将数据从文件A.dmp还原到计算机B
  3. 当机器B中已存在记录时,我不想将其插入机器B中。
  4. 我正在尝试将数据从机器A转储到简单的SQL插入命令,但是当我尝试恢复它时,我遇到了重复的键错误。更重要的是,我想从命令行恢复数据(我必须导入250 MB数据),因为现在我正在尝试使用pgAdmin手动执行此操作。

    最好的方法是什么?

1 个答案:

答案 0 :(得分:8)

我终于这样做了:

  1. 导出到转储:

    pg_dump -f dumpfile.sql --column-inserts -a -n <schema> -U <username> <dbname>
    
  2. 为所有表设置“跳过唯一”

    CREATE OR REPLACE RULE skip_unique AS ON INSERT TO <table>
        WHERE (EXISTS (SELECT 1 FROM <table> WHERE users.id = new.id)) 
        DO INSTEAD NOTHING
    
  3. 使用psql

    导入
    \i <dumpfile.sql>