春のバッチが初めてです。春バッチ処理後のファイル移動
フォルダから複数のファイル(デリミタ)を読み込み、DBに読み込む必要があります。私はそれをしました。
しかし、私の問題は、各ファイルが処理された後、processed
フォルダにファイルを移動するか、エラーレコードをError
フォルダに移動する必要があります。私は複数のファイルから下のファイル(abc.txt
)処理する場合
例えば:
D|hello1|123
D|hello2|three - Error
D|hello3|123
を私は2回目のレコードがエラーであることを知っています。
エラーフォルダにエラーファイル(abc-error.txt
)を書き込んで次のレコードに進めなければなりません。ファイルがエラーレコードを除外して正常に処理されたら、abc.txt
を処理済みのフォルダに移動する必要があります。
上記の要件をどのように達成できますか?
私の仕事:
<batch:job id="file_to_db">
<batch:step id="step1">
<batch:tasklet ref="moveFiletoTmpFolder" />
<batch:end on="FAILED"/>
<batch:next on="*" to="step2" />
</batch:step>
<batch:step id="step2">
<batch:tasklet transaction-manager="transactionManager"
start-limit="100">
<batch:chunk reader="multiResourceReader" writer="databaseItemWriter"
commit-interval="100">
</batch:chunk>
</batch:tasklet>
</batch:step>
</batch:job>
<bean id="multiResourceReader"
class=" org.springframework.batch.item.file.MultiResourceItemReader">
<property name="resources" value="file:batch/csv/processing/*.csv" />
<property name="delegate" ref="cvsFileItemReader" />
</bean>
ジョブが一歩ではありません。しかし、各ファイルは処理された後に移動する必要があります。 エラーレコードは、ファイルごとにfilename-error.txt
という別のファイルに書き込まなければなりません。
は、それが単一ステップ・ジョブますか?可能であれば、ジョブとステップの設定を表示します。 –
Teja、あなたは、可動部分を行うタスクレットで別のステップを追加することで実現できます。ここでは「archiveFileTasklet」の部分を参照してください:http://www.javaworld.com/article/2458888/spring-framework/open-source-java-projects-spring-batch.html?page=4 –
@ゲスト、タスクレットが使用されています一度操作を行うためのものです。しかし、私のために、私は多くのファイルから各ファイルを読み込んだ後、別のフォルダにファイルを移動する必要があります。 – Teja