WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:データの併合

0:[投稿] ゆう。 [2002/03/14 03:02 ][環境:WIN+NN WIN系+Perl]

2つのファイル内のデータを比較して日付が同じモノがあれば、
片方のファイルの数値分を、もう片方のファイルの数値に足して、足した後のデータを書き込み、
同じ日付が無いデータはそのままのデータを新しいファイルに書き込みたいのです。

例で説明しますと、

ファイル1の内容(こっちがマスタ)
3/14,10
3/15,10
3/16,10
3/17,10
3/18,10

ファイル2の内容(トランザクション)
3/15,2
3/17,3

ファイル1とファイル2のデータを併合併合して、

ファイル3の内容
3/14,10
3/15,12 #@
3/16,10
3/17,13 #@
3/18,10

@の部分が両方とも同じ日付のデータがあったので、
更新されています。

マスタファイルの方は日付は毎日連続的に入っています。
トランザクションは飛び飛びで入っています。

いままで頑張ってみましたが、理想どおりの結果が得られませんでした。

どなたかご教授の程よろしくお願い致します。


1:[回答] えび [2002/03/14 08:09 ]

 トランザクションのデータが少ないようなら、ハッシュを使って処理するのが楽ではないでしょうか。

・トランザクションのデータを読み込み、日付をキーとするハッシュに格納してしまう。
・マスターのデータを一行ずつ読み込む。日付を読みとり、先ほど作ったハッシュにそのキーを持つ値があればその値を追加する。
・データを書き出す。

 と、こんな感じで。


2:[回答] B-Cus [2002/03/15 00:28 ]

% join -a1 -t, file1 file2
3/14,10
3/15,10,2
3/16,10
3/17,10,3
3/18,10
% join -a1 -t, file1 file2 | awk -F, 'NF==3 {print $1,$2+$3} NF==2 {print}'
3/14,10
3/15 12
3/16,10
3/17 13
3/18,10

とか。

# でも Windows なので join も awk もないんですな。
## join の使い方を覚えたばかりなので、書いてみたかっただけだったりする。


3:[完了] ゆう。 [2002/03/16 01:20 ]

えびさん、B-Cusさん回答ありがとうございます。
結果的には、えびさんのおっしゃったハッシュを使って
成功しました。
ほんとにありがとうございました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World