1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

FiletoDBのバッチ処理に関する備忘録

Last updated at Posted at 2023-03-02

駆け出しのSEです。

今回初めてバッチ処理の設計・実装に取り組みましたが、FiletoDBのバッチ処理において、ファイルからDBへデータが格納される流れを理解するにあたって少し混乱があったので、ここに書き留めておきます。

扱うファイルの構成について

ファイルの中身は、ヘッダレコード、データレコード、トレーラレコードなど、「レコード」という単位でデータ項目がグループ分けされています。
なお、ファイル自体は固定長改行無しのテキストファイルを意識していますが、そこからデータ項目を抽出していく過程については割愛します。
今回は、とある会員情報を題材とした以下のような1つのファイルを例に処理を説明します。
ここでは、レコードの種類はデータ区分という項目で識別します。

ヘッダレコード
データ区分 会員番号 氏名
1 1111 タナカイチロウ
データレコード
データ区分 生年月日 電話番号 メールアドレス
2 20001231 11122223333 aaa@example.co.jp
トレーラレコード
データ区分 会員ランク ポイント
8 GOLD 300

DB登録後の状態

以下にDB登録後の状態を示します。
レコードには登録順に処理連番を振り、テーブル項目として追加するものとします。
なおここで、ファイルのレコード種類の「レコード」と、DBの行を表す「レコード」は区別するよう注意してください。

処理連番 データ区分 会員番号 氏名 生年月日 電話番号 メールアドレス 会員ランク ポイント
1 1 1111 タナカイチロウ
2 2 20001231 11122223333 aaa@example.co.jp
3 8 GOLD 300

上記のように、基本的にファイルのレコード種類をひとつの単位として処理し、対応する項目ごとに登録を行っていくことで、ファイルのレコード種類ごとにDBの1レコードとなります。(表で見ると階段状にデータが入るイメージ)
つまり、DBに登録した状態でも、「ヘッダレコード出身の行」「データレコード出身の行」が存在するイメージで、これ以降にDBtoDBの処理が続く場合も、この単位のまま精査などを行っていくのが一般的です。
なお、該当するレコード種類以外の行に絶対に格納しないかというとそうではなく、その必要がある際はインスタンス変数やセッションで持ち回ることで対応します。

私が設計書を読み始めたときは、なんとなく1ファイル分のデータは自動的にDBの1行として登録されるかのように思い込んでいたので、今回このように書き留めておくことにしました。

※このアカウントで発信する内容はあくまで私個人の意見であり、現在所属する会社の公式見解を示すものではありません。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?