我在各种不同的数据库类型(Microsoft SQL2005、MySql 和 IBM Informix、Oracle)上有相同的数据表,我需要对表中的数据生成一个 SHA-1 哈希结果,该结果在不同的数据库类型中是相同的。
我正在尝试确定完成此任务的最佳方法,到目前为止,这就是我想出的:
- 使用 .NET SqlDataAdapter,从所需的表中选择 * 到 DataTable。
- 通过 List.Sort() 对列名进行排序,以确保数据库类型之间的顺序一致
- 对于每一行,按如下方式执行哈希:
- 按照上面确定的顺序将每个列值转换为字符串并附加到 rowString
- 散列整个 rowString 以获得 rowHash 并将其添加到列表中。
- 接下来,将所有 rowHash 值按它们的 SHA-1 值排序,并对结果进行散列以获得最终的表散列。这应该解决在不同数据库类型之间以不同顺序返回行的问题。
我会遇到此实施的任何问题吗?例如来自不同数据库的数据类型导致不同的字符串结果?
另外,有必要分拣吗?我假设除非在查询中定义,否则不能保证列和行的顺序,我希望它尽可能动态。
谢谢。