- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用FlatFileItemReader处理CSV文件。
有时我在输入文件中出现空白行。
当发生这种情况时,整个步骤将停止。我想跳过这些行,然后正常进行。
我试图将异常处理程序添加到步骤中,以便捕获执行,而不是弯腰整个步骤:
@Bean
public Step processSnidUploadedFileStep() {
return stepBuilderFactory.get("processSnidFileStep")
.<MyDTO, MyDTO>chunk(numOfProcessingChunksPerFile)
.reader(snidFileReader(OVERRIDDEN_BY_EXPRESSION))
.processor(manualUploadAsyncItemProcessor())
.writer(manualUploadAsyncItemWriter())
.listener(logProcessListener)
.throttleLimit(20)
.taskExecutor(infrastructureConfigurationConfig.taskJobExecutor())
.exceptionHandler((context, throwable) -> logger.error("Skipping record on file. cause="+ ((FlatFileParseException)throwable).getCause()))
.build();
}
public Step processSnidUploadedFileStep() {
SimpleStepBuilder<MyDTO, MyDTO> builder = new SimpleStepBuilder<MyDTO, MyDTO>(stepBuilderFactory.get("processSnidFileStep"));
return builder
.<PushItemDTO, PushItemDTO>chunk(numOfProcessingChunksPerFile)
.faultTolerant().skip(FlatFileParseException.class)
.reader(snidFileReader(OVERRIDDEN_BY_EXPRESSION))
.processor(manualUploadAsyncItemProcessor())
.writer(manualUploadAsyncItemWriter())
.listener(logProcessListener)
.throttleLimit(20)
.taskExecutor(infrastructureConfigurationConfig.taskJobExecutor())
.build();
}
最佳答案
我们创建了自定义的SimpleRecordSeparatorPolicy
,它告诉读者跳过空白行。这样一来,我们读取了100条记录,即3条空白行,这些行均被无视忽略,并写入97条记录。
这是代码:
package com.my.package;
import org.springframework.batch.item.file.separator.SimpleRecordSeparatorPolicy;
public class BlankLineRecordSeparatorPolicy extends SimpleRecordSeparatorPolicy {
@Override
public boolean isEndOfRecord(final String line) {
return line.trim().length() != 0 && super.isEndOfRecord(line);
}
@Override
public String postProcess(final String record) {
if (record == null || record.trim().length() == 0) {
return null;
}
return super.postProcess(record);
}
}
package com.my.package;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.item.file.FlatFileItemReader;
import org.springframework.batch.item.file.mapping.DefaultLineMapper;
import org.springframework.batch.item.file.transform.DelimitedLineTokenizer;
import org.springframework.stereotype.Component;
@Component
@StepScope
public class CustomReader extends FlatFileItemReader<CustomClass> {
@Override
public void afterPropertiesSet() throws Exception {
setLineMapper(new DefaultLineMapper<CustomClass>() {
{
/// configuration of line mapper
}
});
setRecordSeparatorPolicy(new BlankLineRecordSeparatorPolicy());
super.afterPropertiesSet();
}
}
关于spring - 如何使用FlatFileItemReader和 block 跳过CSV中的空白行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29673524/
我正在使用 LinqToExcel 轻松地将 Excel 数据导入 SQL Server。 var fileName = ConfigurationManager.AppSetting
在我的 MVVM WPF 应用程序中,我使用的是数据绑定(bind)流文档。我使用了 here 描述的技术能够将我的数据绑定(bind)到流文档。 我的流文档绑定(bind)到我的 View 模型中的
好吧,这很难解释。 场景: 我有一个 DataGrid 定义如下: 它有两个 header ,我需要添加数据,我做了很多研究建议使用 Obs
如果用户单击 DataGridView 底部的空白行并将焦点从 DataGridView 移开,则现在单击的行将处于指示对该行进行更改的状态。 是否可以告诉 DataGridView 取消将此行标记为
我必须迭代行并将其添加到列表中,但我得到的总行数是 Excel 工作表中存在的总行数,即 1001 行,但我只有 3 行,包括标题,我必须停止使用行号的大小进行循环。 我的代码是 Sheet
我有一个 csv 文件,其中包含必须从中删除的信息(通过删除相应的列来完成),我得到的输出是我所期望的,除了每行之间还给我空白行。我怎样才能摆脱那些? (我目前没有pandas,所以如果有解决这个问题
我是一名优秀的程序员,十分优秀!