Informix から Oracle に移行するデータ移行プロジェクトを行っています。ここで、Informix テーブルと Oracle テーブルの間でデータを比較する必要が生じました。したがって、Informix の Table1 は Oracle の Table1 に移行されます。
現在、データはTable1
Informix からTable1
Oracle に移行されています。両方のテーブルから 2 つのフラット ファイルにデータを取得しています。2 つのファイルにデータの違いがあるかどうかを確認したいだけです。
File1
300列の100万レコードとFile2
言い、300列の100万レコードと言います。File1
およびFile2
パイプ区切りファイルです。したがって、違いはファイルのどこにでもある可能性があります。ほとんどの行全体が一致する可能性がありますが、1 つまたは 2 つの列に違いがある可能性があります。以上のことを念頭に置いて、違いを調べてみたいと思います。row1 in file1 is not matching with row1 in file2 at column 3
差分出力には、両方のファイルの列の値などのリストが表示されるはずです。両方のファイルからのそのような違いはすべて、素人が理解できる形式でコンソールにリストする必要があります。
より明確にするために、例を挙げて説明したいと思います。
以下のように見える場合、私の最初のファイル:
col1|col2|col3|col4|col5|col6 1234|ramyakrishna|4567|ramya.krishna@worse.com|228802|もっと悪い 1235|チャンダン|4567|chandan.kumar@worse.com|228862|もっと悪い 1236|Kacitha|4567|kacitha.mishra@worse.com|228872|もっと悪い 1238|シャジン|4567|shajin.mahesh@worse.com|228873|もっと悪い
2 番目のファイルは次のようになります。
col1|col2|col3|col4|col5|col6 1234|ramyakrishna|4567|ramya.krishna@good.com|228802|良い 1235|チャンダン|4567|chandan.kumar@worse.com|228789|もっと悪い 1236|Kacitha|4567|kacitha.mishra@worse.com|228872|もっと悪い
したがって、両方のファイルを比較すると。col4
とcol6
に違いがあることがわかりますrow2
。だから私はこのようなものが欲しい:
1234|ramyakrishna|4567|ramya.krishna@good.com|228802|良い :COL4-EXPECTED-ramya.krishna@worse.com:COL6-EXPECTED-worse
したがって、2番目のファイルから上の行で印刷する必要があります。次に、期待値を出力する必要があります。
スクリプトを使用する前にファイルをソートする必要があることは知っています。
fge のスクリプトでは、以下のような出力が得られます。
私は以下のような出力を得ています
$perl diff.perl 行 1: 列 38 の異なる値 (前は g、予想は w) 1 行目: 列 40 の値が異なります (以前は o で、r が必要でした) 行 1: 列 41 の異なる値 (以前は d、予期されていたのは s) 行 1: 列 42 の異なる値 (was ., expected e) 1 行目: 列 43 の値が異なります (以前は c でしたが、予期されていました)。 1 行目: 列 44 の値が異なります (以前は o で、c が必要でした) 1 行目: 列 45 の値が異なる (以前は m、期待値は o) 1 行目: 列 46 の値が異なります (以前は |、m でした)
列全体の比較が必要です。ファイルは|
区切りファイルです。