私は、SQLの挿入、削除、または更新ステートメントに基づいている文字列を作成するSpringバッチジョブで作業しています。各行の最初の3文字がadd
,、またはdel
のいずれかであるフラットファイルを読み込みます。プロセッサでレコードをフィルタリングするSpringバッチ
例:insert into ...
、update ...
とdelete ...
:
ADD123456001SOUTHLAND PAPER INCORPORATED ... //more info
CHG123456002GUERNSEY BIG DEAL FAIRFAX ...//more info
DEL123456002GUERNSEY BIG DEAL FAIRFAX ...//more info
上記の文から、私のItemReaderは、3つの文字列を生成します。読者はフラットファイル全体を読み込み、これらの文字列のarraylistを私の作家に返します。私の作者はこれらの文字列を受け取り、私のデータベースに書き込みます。
ここに私の問題があります。 add
が要求される前にがリクエストされた場合はどうなりますか?既に削除されたものを変更しようとするとどうなりますか?
私はSpringDocsにItemProcessor上に読み込み、フィルタリング処理の記述は、私がやろうとしているまさにです:
例えば、の3つの の異なる種類を含むファイルを読み込み、バッチジョブを考えますレコード:挿入するレコード、更新するレコード、削除するレコードは です。レコードの削除がシステムによってサポートされていない場合、 は、「削除」レコードをItemWriterに送信することは望ましくありません。 しかし、これらのレコードは実際には悪いレコードではないので、スキップするのではなく、 をフィルタリングしてほしいでしょう。その結果、ItemWriter は「挿入」と「更新」レコードのみを受け取ります。
しかし、ドキュメントに記載されているItemProcessor
の例は実際には私には意味がありません。誰かが私のプロセスを理解できますか?または、良いItemProcessingのいくつかの例を教えてください。
編集:コマンドの後の6文字は、SQLデータベースに関連付けられたIDです。
私はあなたが言っていることを見ていますが、誰かが私にフラットファイルを提供して、決して追加されなかったアイテムを変更したとしましょう。私はまだこの変更が可能であることを確認するために私のデータベースに対してチェックする必要があります。これは処理されませんか? –
@Mike:はい、それはItemProcessorをうまく使用しているように思えますが、そこにあるかどうかをチェックし、そうでなければ例外ファイルに追加することができます。 –