システム間でデータを連携する際によく使用されるテキストファイルに下記4種のレコードが含まれるファイルフォーマットが存在します。
- ヘッダーレコード
- データレコード
- トレーラーレコード
- エンドレコード
以下がそのフォーマットで作成されたCSVファイルのサンプルです。
1,20240906
2,0001,商品AAA,120
2,0002,商品BBBB,230
2,0003,商品CCCC,1250
2,0004,商品DDDD,560
8,4
9,ENDこの記事では上記ファイルフォーマットの目的と各レコードの特徴をサンプルを使用しながら整理しています。
ヘッダーレコード
ヘッダーレコードとはファイルの最初に位置するレコードのことです。
以下のサンプルでハイライトされた1行目がそれにあたります。
1,20240906
2,0001,商品AAA,120
2,0002,商品BBBB,230
2,0003,商品CCCC,1250
2,0004,商品DDDD,560
8,4
9,END最初の文字である「1」は該当のレコードがヘッダーレコードであることを判別させるレコード区分を表現しており、一般的にはファイルの作成日付やデータ種別などをこのレコードで記述します。
データレコード
データレコードはファイルの中央に位置するレコードです。
以下のサンプルでハイライトされた2~5行目がそれにあたります。
1,20240906
2,0001,商品AAA,120
2,0002,商品BBBB,230
2,0003,商品CCCC,1250
2,0004,商品DDDD,560
8,4
9,END最初の文字である「2」は該当のレコードがデータレコードであることを判別させるレコード区分を表現しており、実際にやり取りしたいデータ本体が格納されています。
トレーラーレコード
データレコードの後ろに位置またはファイルの最後に位置するレコードです。
以下のサンプルでハイライトされた6行目がそれにあたります。
1,20240906
2,0001,商品AAA,120
2,0002,商品BBBB,230
2,0003,商品CCCC,1250
2,0004,商品DDDD,560
8,4
9,END最初の文字である「8」は該当のレコードがトレーラーレコードであることを判別させるレコード区分を表現しており、データ件数などの集計情報が記述されます。
※エンドレコードがなくトレーラーレコードで最後になっているケースもあります。
エンドレコード
その名の通り、ファイルの最後に位置するレコードです。
以下のサンプルでハイライトされた7行目がそれにあたります。
1,20240906
2,0001,商品AAA,120
2,0002,商品BBBB,230
2,0003,商品CCCC,1250
2,0004,商品DDDD,560
8,4
9,END最初の文字である「9」は該当のレコードがエンドレコードであることを判別させるレコード区分を表現しており、ファイルの終了を示します。
このフォーマットの目的は?
データの整合性や完全性を確保できる
トレーラーレコードの集計情報と実際のデータレコードの件数を確認することでデータの欠落がないかを判断できます。また、データの最初と終わりを明確にすることで正確にデータが伝達されていることも確認できます。
処理を容易にする
各レコードにはレコード区分が定義されています。これにより、どのレコードがどのような種類のデータかを瞬時に判断でき、処理を容易に実装できます。
まとめ
以上が、ヘッダーレコード・データレコード・トレーラーレコード・エンドレコードそれぞれの解説でした。
今回まとめた内容はあくまで一例で、中にはデータレコードが2種類、3種類のフォーマットもあります。その場合は、レコード区分が「3」「4」と記述されたり、レコード区分「2」が同一で次の値が「001」「002」で区別されたりと扱うシステムによっては若干の違いはあるようです。