我以前从未使用过Spring Batch,但它似乎是我试图完成的一个可行的选择。我有大约10个机构的15个CSV文件,我需要每晚处理。我将CSV存储到Oracle数据库的staging表中。
CSV文件可能看起来像这样。
DEPARTMENT_ID,DEPARTMENT_NAME,DEPARTMENT_CODE
100,Computer Science & Engineering,C5321
101,Math,M333
...
但是,当我处理该行并将其添加到数据库时,我需要填写一个机构id,该机构id将根据当时正在处理的文件夹确定。
数据库表如下所示
INSTITUTION_ID,DEPARTMENT_ID,DEPARTMENT_NAME,DEPARTMENT_CODE
1100,100,Computer Science & Engineering,C5321
还需要对CSV文件中的每一行进行验证。Spring Batch也能处理吗?
我已经看到参考CustomItemReader和CustomItemWriter,但不确定如果这是我需要的。我所看到的示例似乎都很基本,只是将CSV准确地转储到匹配表中。
是的,您报告的所有任务都可以通过spring批处理完成-
对于阅读器,您可以使用-多资源项阅读器,您的通配符名称与您的-文件名匹配。
要验证来自文件的行,您可以使用项处理器并处理验证。
对于您的情况,您不需要使用自定义项写入器-您可以在XML文件中将项写入器配置为DB项写入器。
我建议您使用基于XML的方法来实现Spring批处理。
XML将用于配置批处理的所有体系结构——如
所示job -- step -- chunk -- reader -- processor -- writer
和跟踪错误和异常,您可以在每个阶段实现侦听器。
-- step Execution Listener
——项目读取器监听器——项目处理器监听器——Item Writer Listener