如何同步两个不相同的表?

时间:2015-12-04 08:27:40

标签: mysql sql asynchronous database-replication

我有两个使用相同数据的项目。但是,此数据保存在2个不同的数据库中。这两个数据库中的每一个都有一个表,与其他数据库中的对应表几乎相同。

我在寻找什么

我正在寻找一种同步两个表的方法。更容易说,如果database_one.table获得插入,则需要将同一记录插入database2.table

数据库和表一

Table Products
| product_id | name | description | price | vat | flags |

数据库和表二

Table Articles
| articleId | name_short | name | price | price_vat | extra_info | flags |

问题

我从未使用过,也不知道如何使用任何数据库同步方法。还有什么让我担心的是,这些表并不相同,所以我会以某种方式将列映射到另一个。

例如:

database_one.Products.name -> database_two.articles.name_short

有人可以帮我这个吗?

2 个答案:

答案 0 :(得分:0)

您可以使用MERGE功能: https://www.mssqltips.com/sqlservertip/1704/using-merge-in-sql-server-to-insert-update-and-delete-at-the-same-time/

然后创建一个以所需频率运行的程序,或者如果需要立即将合并插入触发器中。

答案 1 :(得分:0)

可能的方法之一是使用触发器。您需要在database_one.table上创建插入,更新和删除的触发器,它在database2.table上执行相应的操作。我想,两个数据库之间插入/更新/删除都不会有任何问题。使用触发器时,您可以非常轻松地映射列。 但是,您需要考虑使用触发器的prons和cons - 阅读herehere。根据我的经验,性能非常重要,因此如果您有大量的DB,那么使用触发器进行数据复制并不是一个好主意。 也许你也应该检查this