SSISを使用して、大規模なデータベースをOracle11gからSQLSERVER2008R2に移行しています。チェックサムを使用して、数値データのデータ整合性をどのように検証できますか?
1 に答える
これまで、私は常にいくつかのアプリケーションコントロールを使用してこれを行ってきました。両方のプラットフォームで簡単に計算できるものでなければなりません。
多くの場合、最終結果は次のようなクエリになります。
select count(*)
, count(distinct col1) col1_dist_cnt
...
, count(distinct col99) col99_dist_cnt
, sum(col1) col1_sum
...
, sum(col99) col99_sum
from table
ファイル、Excel、またはデータベースにスプールして、結果を比較します。プロジェクト管理と監査人のために保存します。
アプリケーション制御の詳細については、こちらをご覧ください。私は規制報告のためのさまざまな財務報告システム間のチェックのためにそれを書いたので、このアプローチはほとんどの場合に役立ちます。
ちょうど1つのフィールド値が間違っている場合、それは常に表示されます。2つのエラーが互いに補い合う可能性があります。たとえば、行1の列1は、行2の列1から値を取得します。
それを検出するには、各値にその行に固有の値を掛けます。たとえば、移行に含まれる一意のID列またはIDがある場合:
, sum(ID * col1) col1_sum
...
, sum(ID * col99) col99_sum
数値がオーバーフローした場合は、最初に利用可能な最大の精度を使用してみてください(特に、SQL Serverでは難しい場合があります)。実行不可能な場合は、mod関数を使用します。modによって隠されているエラーの種類はごくわずかです。
ケーキの上のアイシングは、これらのステートメントを自動生成することです。Oracleでは、user_tables、user_tab_columnsを確認してください。SQL Serverでは、syscolumnsなどを確認してください。