2つのファイルのレコードの差異を抽出したいのです。
2つのファイルのレコードの差異を抽出したいのです。
ファイルAとファイルBがあります。
ファイルAの中身
id001,日本次郎,25才,東京都,2010/04/06,batch
id002,日本花子,20才,千葉県,2010/04/06,batch
・
・
・
ファイルBの中身
id000,日本太郎,30才,東京都,2010/04/06,batch(Bにしか存在しない)
id001,日本次郎,28才,東京都,2010/04/08,batch(年齢と更新日付が違う)
id002,日本花子,20才,千葉県,2010/04/08,batch(更新日付だけ違う)
・
・
・
レコードは順不同です。
AとBを比較して同じid(一番左の値です)で更新日付と更新者(一番右です)以外が更新されていたらファイルCに書き出したいと考えています。
※もしかしたら除外の項目が増えるかもしれないので、左から何文字(何項目)目同士で比較する方法は使うことができません。
どうすればできるか(レコードは数十万件以上になるので速度面も含めて)考えているのですが、何かよい方法はないでしょうか?
性能どころかまだ形にもなっていないので、取り合えず正しい結果を得られることだけを考えて下記のように進めています(それぞれの実装方法は調べながらですが)。
1.Aファイルから1行読み出す。
2.読み出した1行をカンマを区切り文字にして分解する。
3.Bファイルを1行ずつ読み込んで同じように分解して、2で分解したidと同じidだったら、更新日付と更新者以外を比較して違っていたらファイルに書き出す。
4.Bファイルに該当idがなかったらファイルに書き出す。
※Aファイルの最終行まで2~4を繰り返す。
もっといい方法があると思うのですが、シェルスクリプトの経験がないためごり押しみたいな方法になっています・・・。
もしよろしければアドバイス頂けないでしょうか。