我在不同的机器上使用相同的数据库模式(PostgreSQL)。我想知道,如何将数据从一台机器合并到另一台机器。Schema有许多表(大约10个)。我想实现什么?
将数据从计算机A转储到文件A.dmp
将数据从文件A.dmp还原到计算机B
当机器B中已经存在一个记录时,我不想把它插入到机器B中。
我试图将数据从机器A转储到简单的SQL inserts命令,但是当我试图还原它时,我得到了重复的键错误。更重要的是,我想从命令行恢复数据(我必须导入250MB的数据),因为现在我正试图用pgAdmin手动恢复。
最好的方法是什么?
最佳答案
我终于这样做了:
导出到转储:
pg_dump -f dumpfile.sql --column-inserts -a -n <schema> -U <username> <dbname>
为所有表设置唯一跳过
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
使用
psql
导入\i <dumpfile.sql>
关于postgresql - 如何将转储从PostgreSQL合并到数据库中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20187947/