在两个 postgres 数据库表之间同步数据

Posted

技术标签:

【中文标题】在两个 postgres 数据库表之间同步数据【英文标题】:sync data between two postgres database tables 【发布时间】:2019-07-03 15:30:04 【问题描述】:

我有一个 db1 表 A 和一个 db2 表 B 我只想将表 A 中不存在的行插入表 B,如果表 B 中已经存在数据,请更新它。 执行此操作的最佳方法是什么?我有数百行要插入和更新以及许多表。我正在使用 dbvisualizer。 谢谢。

【问题讨论】:

请提供样本数据和期望的结果。 “已经存在”是什么意思? 【参考方案1】:

一种方法使用not exists 子查询。像这样的:

insert into b (col1, . . . )
    select col1, . . . 
    from a
    where not exists (select 1 from b where b.? = a.?);

还有其他方法。如果您在b 上有一个定义唯一性的unique 约束/索引,那么您可能需要一个on conflict 子句。如果您试图防止重复,那么 unique 约束/索引是正确的解决方案。

【讨论】:

以上是关于在两个 postgres 数据库表之间同步数据的主要内容,如果未能解决你的问题,请参考以下文章