java - 在春季批处理中使用 itemProcessor 跳过文件中的错误行
问题描述
20180627;PM;ABC;0029;BYX;Technology Inc;;DUMMY;OK;33900;34.3;1162770;CT;;;;;;
;;;;;;;;;;;;;;;;;; //bad line
;;;;;;;;;;;;;;;;;; //bad line
;;;;;;;;;;;;;;;;;; //bad line
有没有办法可以跳过没有数据的坏行MyProcessor
:
public class MyProcessor implements ItemProcessor<Row, Price> {
@Override
public Price process(final Row row) throws Exception {
if (row == null) {
}
//Values for lines in file
Price scp = new Price();
//set values
return scp;
}
}
对象的值Row
是空值。我看过带有空行的示例,但在这里我处理的是实际上是分隔符的冒号。
我是否必须检查某些字段的有效性并阻止对象创建和设置?有没有更好的办法?
解决方案
使用 aPatternMatchingCompositeLineMapper
将有效行与无效行分开,并使用自定义FieldSetMapper
将无效行映射到名为的对象InvalidLine
(仅作为示例)。
在处理阶段使用 a通过自定义CompositeItemProcessor
传递InvalidLine
对象ItemProcessor
并执行您喜欢的操作。
推荐阅读
- firebase - 如何从 firebase 功能获得响应到我的网页并打印为控制台
- javascript - 如何解决外部脚本的跨域 (CORS) 警告
- sql-server - SQL Server 中的 Lat / Long 返回空白
- jquery - Jquery在prev中选择孩子不起作用
- serial-port - USART3_IRQHandler() 被连续调用并设置了 LL_USART_IsActiveFlag_TXE
- php - PHP - MLM 在树的各自一侧显示节点
- java - 原因:java.lang.ClassCastException:com.google.appengine.api.datastore.Text 无法转换为 java.lang.String
- sql - 每次重建 OLAP 多维数据集时,您是否必须截断所有表?
- ios - 每当应用程序在 react-native 中从后台进入前台时,关键 isInternetReachable 总是在 iOS 中返回一分钟的 false
- c# - 将 OAuth2 身份验证服务器添加到 ASP.NET MVC 5