【发布时间】:2020-10-05 17:27:06
【问题描述】:
我需要比较两个不同数据库中声明为字符串的两列,列的所有值,例如一次 10000 行。 一个数据库是 Firebird,一个是 SQLite。我想为两列创建某种校验和,以查看两列中是否存在完全相同的值。
对于整数,我可以创建一个sum(column),如果表格中的总和匹配,我可以假设它具有相同的值。这不是万无一失的,但是如果有很多记录,准确性就会提高。
对于数值,同样可以使用。但是,我不知道如何对字符串列进行类似的操作。
【问题讨论】:
-
我建议你使用 MD5 或 SHA 之类的哈希,然后比较哈希。使用这种散列,检测错误的可能性非常小。远不如校验和。
-
一个选项如果您有空间,可以将数据从一个数据库加载到另一个数据库的暂存/临时表中,然后在两个表之间使用 EXCEPT 查询来查看是否有任何行不同。
-
@Brian 如果表 1 包含
A、A、B并且表 2 包含A、B、B,那么您的EXCEPT查询将不会检测任何东西。 -
关于整数检测的一个侧面说明 - 准确性高度取决于您的数据 - 如果您的整数数据具有相似的值并且在每一行中它可以以相同的增量上下变化 - 给您错误相等的概率不会很低。
标签: sql sqlite delphi firebird