在两个 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 数据库表之间同步数据的主要内容,如果未能解决你的问题,请参考以下文章

Rails:如何管理同步数据的两个表之间的关联?

使用debeziumkafka-connect将postgres数据实时同步到kafka中,表topic重新路由

使用 Kafka 在两个微服务之间同步数据

Ag-grid 在两个网格之间同步数据

数据库与数据库之间数据如何同步

如何用pb的pipeline实现两个表的同步