さまざまなデータベース タイプ (Microsoft SQL2005、MySql、および IBM Informix、Oracle) に同じデータ テーブルがあり、異なるデータベース タイプで同じテーブル内のデータに対して SHA-1 ハッシュ結果を生成する必要があります。
これを達成するための最良の方法を決定しようとしていますが、これまでのところ、これが私が思いついたものです:
- .NET SqlDataAdapter を使用して、目的のテーブルから * を DataTable に選択します。
- List.Sort() を使用して列名を並べ替え、データベースの種類間で一貫した順序を確保します
- 行ごとに、次のようにハッシュを実行します。
- 上記で決定した順序で、各列の値を文字列に変換し、rowString に追加します。
- rowString 全体をハッシュして rowHash を取得し、これをリストに追加します。
- 次に、すべての rowHash 値を SHA-1 値で並べ替え、結果をハッシュして最終的なテーブル ハッシュを取得します。これにより、異なるデータベース タイプ間で異なる順序で行が返される問題に対処する必要があります。
この実装で問題が発生することはありますか? さまざまなデータベースからのデータ型など、さまざまな文字列結果を引き起こしますか?
また、仕分けは必要ですか?クエリで定義されていない限り、列と行の順序は保証されないと想定しており、これを可能な限り動的にしたいと考えています。
ありがとう。