我想读取一个csv文件,用其他一些外部系统中的一些数据来丰富每一行,然后将新的富集csv写入某个目录 现在要从外部系统获取数据,我需要逐个传递每一行并从外部系统获取新列。 但是为了用每一行查询外部系统,我需要通过发送特定列的所有值来传递我从外部系统获得的值。 例如 - 我的csv文件是 -
名称,价值,年龄
10,v1,12
11,v2,13
所以为了丰富我首先需要根据总年龄获取一个值 - 即12 + 13并从外部系统获得总值然后我需要将每行的总数发送到外部系统以获得丰富的值。 我使用spring批处理,但使用fLatFileReader,我一次只能读取一行。在此之前我将如何参考整个专栏。
请帮忙。
由于
答案 0 :(得分:1)
有两种方法可以做到这一点。
选项1
如果您要将所有记录存储在内存中,请选择此选项。完全取决于计算总年龄所需的记录数。
读者(自定义阅读器): 写逻辑一次读一行。 只有当您感觉读取所有行以计算总年龄时,才需要从read()返回null。
注意: - 读者将循环read()方法,直到它返回null。
处理器:您将获得完整的记录列表。计算总年龄。 连接外部系统并获取值。形成需要编写的记录并从流程方法返回。
注意: - 您可以返回由特定字段修改的所有记录或合并单个记录。这完全是您想要做的选择。
作家:写下记录。
选项2
如果option1不可行,请执行此操作。
Step1:读取所有行并计算总年龄并将值传递给下一步。
Step2:再次阅读所有行并更新所需更新的记录并写入相同内容。