3

我在各种不同的数据库类型(Microsoft SQL2005、MySql 和 IBM Informix、Oracle)上有相同的数据表,我需要对表中的数据生成一个 SHA-1 哈希结果,该结果在不同的数据库类型中是相同的。

我正在尝试确定完成此任务的最佳方法,到目前为止,这就是我想出的:

  • 使用 .NET SqlDataAdapter,从所需的表中选择 * 到 DataTable。
  • 通过 List.Sort() 对列名进行排序,以确保数据库类型之间的顺序一致
  • 对于每一行,按如下方式执行哈希:
    • 按照上面确定的顺序将每个列值转换为字符串并附加到 rowString
    • 散列整个 rowString 以获得 rowHash 并将其添加到列表中。
  • 接下来,将所有 rowHash 值按它们的 SHA-1 值排序,并对结果进行散列以获得最终的表散列。这应该解决在不同数据库类型之间以不同顺序返回行的问题。

我会遇到此实施的任何问题吗?例如来自不同数据库的数据类型导致不同的字符串结果?

另外,有必要分拣吗?我假设除非在查询中定义,否则不能保证列和行的顺序,我希望它尽可能动态。

谢谢。

4

1 回答 1

1

注意数值,尤其是舍入和精度。

于 2012-06-27T20:07:01.377 回答