2017-12-07 20 views
0

私はcsvファイルを読み込み、他の外部システムからのデータで各行を充実させ、新しいエンリッチcsvをいくつかのディレクトリに書き出します。 今すぐデータを取得してください外部システムから私は各行を1つずつ渡し、外部システムから新しい列を取得する必要があります。 しかし、私は外部システムからperticularの列のすべての値を送信して得た値を渡す必要がある各行で外部システムを照会する。 例えば - 私のcsvファイルがある -バネバッチ、行ごとに読み込む前に全体のcsvファイルを読む

名前、値、年齢

10、v1,12

11、v2,13

ので、私は最初の値を取得する必要があることを豊かにします全体の年齢 - つまり12 + 13で、外部システムからの合計値を取得し、次に、豊富な値を取得するために、外部システムに各行の合計を送信する必要があります。 私は春のバッチを使用していますが、fLatFileReaderを使用して私は一度に1行だけを読むことができます。その前に全列をどのように参照するのですか?

助けてください。

ありがとう

答えて

0

これを行うには2通りの方法があります。あなたは、メモリ内のすべてのレコードを格納するためにオーケーであれば

OPTION 1

は、このオプションのために行きます。合計年齢を計算するために必要なレコードの数によって異なります。

リーダー(カスタムリーダー): 一度に1行ずつ読み込むロジックを記述します。 合計年数の計算のためにすべての行が読み込まれたと感じる場合にのみ、read()からnullを返す必要があります。

注: - リーダーはnullを返すまでread()メソッドをループします。

プロセッサ:レコードの完全なリストが表示されます。総年齢を計算する。 外部システムを接続し、値を取得します。書かれる必要のあるレコードを作成し、プロセスメソッドから戻します。

注: - 特定のフィールドによって変更されたすべてのレコードを返すことも、単一のレコードをマージすることもできます。これはあなたがしたいことを完全にあなたの選択です。

ライター:レコードを書き込みます。オプション1が不可能な場合

OPTION 2

は、このために行きます。

ステップ1:すべての行を読み取り、合計の年齢を計算し、値を次のステップに渡します。

ステップ2:すべての行をもう一度読み、必要な更新でレコードを更新し、同じものを書き込んでください。

関連する問題