項目数が不揃いなCSVレコードの合成

EDI(電子データ交換)などではよく見かける、ヘッダーレコード、ボディ(本体)レコード、トレーラーレコードの3部構成仕様のCSVレコード(テキスト+カンマ区切りレコード)があったとします。

0,5
1,apple,リンゴ
1,banana,バナナ
1,cat,ネコ
1,dog,イヌ
1,egg,タマゴ
2

上記の例だと、第1項目がレコード区分で、"0" のときヘッダーレコード。"1" がボディレコード、"2" がトレーラーレコードです。ヘッダーレコードの第2項目には、ボディレコードの件数が記載されています。

このような項目数が不揃いな(カンマの個数が不揃いな)CSVレコードの合成には、外部アプリでtypeコマンドを実行させる方法が簡便です。

 f:id:xoblos:20180310103451p:plain

 

mix.bat の内容

type header.csv > all.csv
type body.csv >> all.csv
type trailer.csv >> all.csv

[bat] フォルダにmix.batというバッチファイルを用意しておき、その前手順で、3種類のCSVレコードを [bat] フォルダに名前を変えてコピーしておきます。

header.csv … レコード区分 "0" のヘッダーレコード

body.csv … レコード区分 "1" のボディレコード

trailer.csv … レコード区分 "2" のトレーラーレコード

 

外部アプリとしてmix.batを実行すると、合成されたall.csvが出力されますので、次手順で出力したい場所に名前を付けてファイルコピーします。

typeコマンドのコツは、1種類目を > でそのままリダイレクト出力し、2種類目以降を >> で追記(アペンド)モードでリダイレクト出力する点です。