|
|
1
1
diff算法可能会工作,但不会很快,从某种意义上说,您必须扫描整个源数据库进行每次同步。 基本上,您将以一种约定的、稳定的方式进行完整的数据提取(即,两个这样的提取之间没有任何变化将产生相同的输出)。 然后将其与之前的提取进行比较,然后可以找到所有更改。需要一些比纯文本diff更智能的东西来帮助确定行不仅被删除+插入,而且实际上是被更新的。 不幸的是,如果没有办法问源数据库最新的更改是什么,通过,如您所指出的,缺乏时间戳,或类似的机制,那么我看不到您每次都能得到比完全提取更好的结果。 现在,我对Sybase了解不多,但是在MS SQL Server中,您可以创建另一个镜像第一个数据库,在第二个数据库中,您可以进行所需的任何更改。 但是,如果您可以在Sybase中创建这样一个数据库,并同时使用SQL访问这两个数据库,那么您可能能够运行产生差异的查询。 例如,沿着以下几条线:
这将生成插入或删除的行。 要查找那些已更改的内容,您需要以下WHERE子句:
因为表是联接的,所以WHERE子句将筛选出先前提取和当前状态不同的任何行。 现在,这可能也不会运行得很快,您必须进行测试以确保。 |
|
|
jchristo · 释放时服务炸弹爆炸[重复] 8 年前 |
|
|
Rod · 检查DataTable是否存在列以及是否为null 8 年前 |
|
|
user1451111 · 如何在ADO代码中存储大型查询。NET项目 8 年前 |