私はhttps://docs.spring.io/spring-batch/reference/html/patterns.html#multiLineRecordsマルチライン・レコードリーダー(スタート接頭辞=エンドプレフィックス)
に基づくマルチライン・レコードリーダーソリューションを実装しています私は、次のフラットファイルがあります。
HEA;0013100345;2007-02-15
NCU;Smith;Peter;;T;20014539;F
BAD;;Oak Street 31/A;;Small Town;00235;IL;US
HEA;0013100345;2007-02-15
NCU;Smith;Peter;;T;20014539;F
HEA;0013100345;2007-02-15
HEAを(とオプションでNCU、BAD)を1つのオブジェクトに変換する必要があります。
私の場合、私は "end"行を持っていないので、 "HEA"は新しいItemの開始と前のものの終了を同時に表します。
Dean Clarkに感謝します。これは、溶液のJavaの設定です:リファレンスドキュメントが言及したよう
@Bean
public FlatFileItemReader<FieldSet> readerFlat() {
FlatFileItemReader<FieldSet> reader = new FlatFileItemReader<>();
reader.setResource(new ClassPathResource("multirecord.txt"));
reader.setLineMapper(compositeLineMapper());
return reader;
}
@Bean
public SingleItemPeekableItemReader<FieldSet> readerPeek() {
SingleItemPeekableItemReader<FieldSet> reader = new SingleItemPeekableItemReader<FieldSet>() {{
setDelegate(readerFlat());
}};
return reader;
}
@Bean
public MultiLineCaseItemReader readerMultirecord() {
MultiLineCaseItemReader multiReader = new MultiLineCaseItemReader() {{
setDelegate(readerPeek());
}};
return multiReader;
}
は、次にカスタムMultiLineCaseItemReader
にあなたは両方read()
とpeek()
ディーンありがとうございます!これはまさに私が探していたものです。ワンちゃん、なぜ春のバッチリファレンスガイドは、SingleItemPeekableItemReaderについて何も持っていません... – mirrow
ディーン、あなたは親切に文を "あなたが働いているアイテムは、次の"ヘッダー "行の場合は変更しますか?いくつかの言葉が欠けているように聞こえるからです:) – anton1980