我创建了一个作业批处理,使用filejdbc模块将数据从csv文件提取到jdbc,它工作正常,但是当我计划批处理每隔5分钟运行一次时,它就无法使用增量加载概念,它加载了所有再次提供数据,是否有任何功能可以使用增量加载来安排批处理?
解决方案是运行批处理一次,并创建一个流来执行增量加载吗?流会再次加载所有数据,还是会从某个点继续加载。
请解释如何使用spring XD实现增量加载概念?
谢谢, 莫哈。
答案 0 :(得分:0)
我想缺少的是' state' ... ... filejdbc模块似乎不知道上次导入停止的位置。我做了类似的事情,但我使用自定义批处理作业,并使用元存储来跟踪上次加载停止的位置 - 这是下一个增量将从中获取的位置等。
由于您使用的是spring-xd自带的模块,您可能没有这种灵活性,但您可能需要选择:
a-您的目标表可以定义可防止重复的唯一字段。这样,即使它试图再次加载所有数据,也只会插入新行。这假定模块正在使用“插入忽略”。 (或者类似的东西,而不仅仅是基本的插入(这将引发错误/异常)。我必须说,这很快就会非常快速地结束。
b-如果是一个选项,请编写一个可以在文件上传到数据库后删除该文件的模块。您可以构造一个复杂的流,首先进行数据加载,然后进行文件删除。