spring批处理:如何将有效数据写入一个表,而将另一个表写入无效数据

时间:2014-12-13 08:32:11

标签: java spring

我有一个像

这样的csv文件
day,cost
20140101, 20
2014-01-5, 20
20140101, ab

所以有一些无效数据,我想将有效数据加载到table_normal,并将无效数据加载到table_unnormal 所以最终的数据应该是 for table_normal

day,cost
20140101, 20

表table_unnormal

day,cost, reason
2014-01-5, 20, 'invalid day'
20140101, ab,'invalid cost'

我知道如何在处理器中找到原因,但是如何将作业写入不同的表?

1 个答案:

答案 0 :(得分:0)

我可以建议3种方法来做到这一点,其中没有一种是非常直接和容易的。

a)编写自己的CustomJDBCItemWriter - 你可以过滤掉你想要的任何方式,你应该能够在table table_normal中写一些记录,在table_unnormal中写一些记录

b)使用CompositeItemWriter - 两个编写器将从处理器获得“完整记录列表”。然后,您可以过滤掉每个作者所需的记录。与(a)

非常相似

c)如果您可以对输入进行2次传递 - 您可以分两步编写工作。 第1步:读取记录 - >仅处理不良记录 - >写入table_unnormal 第2步:读取记录 - >处理好记录 - >写入table_normal

没有一个好的内置功能可以直接在春季批处理中处理这种情况(至少没有我知道的)