我目前正在开发从数据库阅读器到数据库编写器的通道。源连接器和目标连接器都在SQL服务器上运行。
问题在于,通过将源中的Interval设置为5毫秒,即使数据已被轮询或写入,通道也会每5毫秒轮询和写入数据。
例如,如果源数据库中只有一行,则通道将每隔5毫秒无限地将一行插入目标数据库。这会导致目标数据库中出现无限重复的行。
有没有办法避免这种情况,只有在轮询的数据是新的时才插入到目的地?
答案 0 :(得分:0)
您没有发布频道,所以我不知道您的查询是什么样的。您也没有发布数据库架构。通常,您需要实现一种方法来跟踪已处理的记录。一种方法是通过在插入新记录时向相关表添加一个默认值为“NEW”的列来实现此目的。处理完它们后(例如从一个数据库复制到另一个数据库),通过update语句将状态设置为“COPIED”。您可以选择使用一个带有时间戳的列,该时间戳指示记录的复制时间。另一种(可能更好的)方法是在一个单独的表中执行此操作,该表跟踪数据库中的所有突变。这为您录制的活动提供了更大的灵活性。
答案 1 :(得分:0)
我能想到的两种方式:
通常的方法是在您正在阅读的数据库的表中设置一个标志,一旦通过笑声从该表中读取数据,您将使用"Read"
或{{1更新表格}}。然后,您将基于该标志编写提取查询,因此仅当标志不等于"Processed"
时才会插入数据
如果您手中没有更改数据库,您可以在提取数据中编写查询,如"Read"/"Processed"
。 ID是您的主要身份。