Spring batch 使用spring批处理在固定长度平面文件中写入多布局
要求是从数据库中获取数据(请参考下面文件中的示例数据),并使用Spring Batch创建固定长度的平面文件。该文件的规范是,将有多个记录具有相同的对齐方式,如1-5,4-7,8-24。。。。。。现在的问题是由于具有相同对齐方式的记录,显然数据将被覆盖。我需要一些解决方案来解决这个问题 我的示例代码: 这里,bean1、bean2是表的映射bean对象Spring batch 使用spring批处理在固定长度平面文件中写入多布局,spring-batch,fixed-length-file,Spring Batch,Fixed Length File,要求是从数据库中获取数据(请参考下面文件中的示例数据),并使用Spring Batch创建固定长度的平面文件。该文件的规范是,将有多个记录具有相同的对齐方式,如1-5,4-7,8-24。。。。。。现在的问题是由于具有相同对齐方式的记录,显然数据将被覆盖。我需要一些解决方案来解决这个问题 我的示例代码: 这里,bean1、bean2是表的映射bean对象 <!-- ======================================================= --&
<!-- ======================================================= -->
<!-- Jobs Definition -->
<!-- ======================================================= -->
<!-- Main processes -->
<!-- Active -->
<job id="FixedLengthFlatFileGenerationJob" xmlns="http://www.springframework.org/schema/batch">
<step id="FixedLengthFlatFileGenerationStep">
<tasklet start-limit="1">
<chunk reader="SampleReader" writer="SampleWriter"
commit-interval="1000">
</chunk>
<listeners>
<listener ref="stepExecutionListener"/>
</listeners>
</tasklet>
<next on="COMPLETED" to="FileTransferStep"/>
<next on="STOPPED" to="SendMailOnFailure"/>
<fail on="*"/>
</step>
<step id="SendMailOnFailure">
<tasklet ref="OnFailureTasklet"/>
</step>
<step id="FileTransferStep">
<tasklet ref="FileTransferTasklet" />
</step>
</job>
<!-- ======================================================= -->
<!-- Readers -->
<!-- ======================================================= -->
<bean id="SampleReader"
class="org.springframework.batch.item.database.JdbcCursorItemReader">
<property name="dataSource" ref="SampleDataSource" />
<property name="sql">
<value>
SQL READ FROM TABLE
</value>
</property>
<property name="rowMapper" ref="SampleMapper" />
</bean>
<!-- ======================================================= -->
<!-- Writers -->
<!-- ======================================================= -->
<bean id="SampleWriter"
class="org.springframework.batch.item.support.CompositeItemWriter">
<property name="delegates">
<list>
<ref local="FileTransferWriter" />
</list>
</property>
</bean>
<bean id="FileTransferWriter" class="org.springframework.batch.item.file.FlatFileItemWriter" scope="step">
<property name="resource" value="file:filelocation/file.txt" />
<property name="lineAggregator">
<bean class="org.springframework.batch.item.file.transform.FormatterLineAggregator">
<property name="fieldExtractor">
<bean class="org.springframework.batch.item.file.transform.BeanWrapperFieldExtractor">
<property name="names" value="bean1,bean2" />
</bean>
</property>
<property name="format" value="%-20s%-30s" />
</bean>
</property>
</bean>
您能否提供示例数据:从数据库中读取的内容;写入文件的内容;应该写入文件的内容。此外,您能否提供您的步骤配置,而不仅仅是读者和作者。谢谢Wingeier。我已经用详细信息更新了我的问题。您能解释一下您的期望吗?因为如果我理解了你的问题,你要求的解决方案是能够在
n
大小的字段中容纳n+x(x>0)
字符。
file.txt TM 45150605033000
UJK5457 0000000000HC605-B045285 D34151631115600 A
BHJ5457 724570420 34151631315600 77014 ct scan for therapy guide Physical Therapy 1S 001 002060 O AA
NTS5457 This is a test for Policy Number 5457
UJK8334 0000000000HC605-B045285 D34151631315600 A
QWS6334 724570420 34151631315600 72142 mri neck spine w/dye Occupational Therapy 2V001 002060 O AA
ETS4334 This is a test for Policy Number 4334.
RYT6313 0000000000HC216-B406574 D34151611115600 A