当前位置: 首页 > 知识库问答 >
问题:

如何使用spring batch从db中的多个表读取数据

尉迟跃
2023-03-14

我尝试使用spring batch从一个表中读取数据并写入其他表,但现在我的要求是从多个表中读取数据并写入一个文件,所以我们可以通过定义多个作业来实现这一点,但我想使用单个作业来实现,即单个读取器、单个写入器和单个处理器。

请为我提供一些关于这个场景的参考资料。

共有1个答案

卫沈义
2023-03-14

spring批处理提供的类不可能,但您可以让它成为我们的一种方式。
处理之前添加一个步骤,创建一个定制的tasklet,在其中分配不同的sql和不同的输出文件,并使它们在循环中运行,只要有sql要执行。
听起来可能很难,但我也处理过同样的情况,这里有一些您可以做到的想法-

   <flow id="databaseReadWriteJob">
            <step id="step1_setReaderWriter">
                <tasklet ref="setReaderWriter" />
                <next on="FAILED" to="" />
                <next on="*" to="dataExtractionStep" />
            </step>
            <step id="dataExtractionStep">
                <tasklet>
                    <chunk reader="dbReader" writer="flatFileWriter" commit-interval="${commit-interval}" />
</tasklet>
                <next on="FAILED" to="" />
                <next on="*" to="step3_removeProcessedSql" />
            </step>
            <step id="step3_removeProcessedSql">
                <tasklet ref="removeProcessedSql" />
                <next on="NOOP" to="step1_setReaderWriter" />
                <next on="*" to="step4_validateNumOfSuccessfulSteps" />
            </step>
    </flow>

下面是setReaderWriter的bean

<beans:bean id="setReaderWriter" class="SetReaderWriter">
        <beans:property name="reader" ref="dbReader" />
        <beans:property name="flatFileWriter" ref="flatFileWriter" />
        <beans:property name="fileSqlMap" ref="jobSqlFileMap" />
        <beans:property name="fileNameBuilder" ref="localFileNameBuilder" />
        <beans:property name="sourceFolder" value="${dataDir}" />
        <beans:property name="dateDiff" value="${dateDiff}" />

任何需要在Reader或Writer中动态添加的内容。上面的sqlMap是sql作为键和输出文件作为值的映射。
希望能有所帮助。

 类似资料:
  • 我有spring批处理应用程序,配置步骤如下: 像这样的读者: 当我执行应用程序,得到这个错误: 组织。springframework。jdbc。UncategorizedSQLException:尝试处理下一行失败;SQL的未分类SQLException[select*from User];SQL状态[99999];错误代码[17289];最后一行之后的结果集;嵌套的例外是java。sql。SQ

  • 我有一个springbatch应用程序,我将连接到一个网络数据库进行阅读。我发现的大多数示例都嵌入了数据库,用于独立测试。我不想那样做。我不确定配置是否类似。以下是我所拥有的最具德国特色的部分(带有一些异议): ,然后从应用程序启动: 我没有配置数据源。我不确定,因为我的基本上只是一个到远程网络数据库的客户端连接,它的配置是否会与我找到的各种示例的嵌入式设置不同。所以我自然会出错(如下)。我只是在

  • 我正在使用BufferedReader类读取Java程序中的输入。我想从一个用户那里读取输入,这个用户可以在一行空格中输入多个整数数据。我想读取整数数组中的所有这些数据。 输入格式-用户首先输入他/她想要输入的数字 然后在下一行中输入多个整数值- 输入: 5. 2 456 43 21 12 现在,我使用BufferedReader的对象(br)读取输入 接下来,我想读取数组中的下一行输入 但是我们

  • 我将使用Apache Camel编写一个CRUD应用程序,非常像下面的示例:http://java.dzone.com/articles/rest-apache-camel 但我想使用JPA,而不仅仅是JDBC。 我看过Camel JPA组件,认为我可以使用它。但要从数据库中读取数据,它需要我定义一个消费者endpoint。 我想从JDBC示例中执行以下操作: 即调用JPA组件作为生产者。 这可能

  • 问题内容: 以下是表格HTML源代码,对于selenium读取其内容而言似乎非常复杂。有人可以帮助我,使用selenium将数据读入python吗? 问题答案: 要使用Selenium Webdriver读取此表,xpath似乎是简单的方法- 我不太了解python,所以代码可能是错误的,但是这个主意似乎是正确的- 要找出中的div标签数量,我们使用xpath- 它将返回一个 大小为6 的列表。

  • 本文向大家介绍如何使用JSP读取表单数据?,包括了如何使用JSP读取表单数据?的使用技巧和注意事项,需要的朋友参考一下 JSP使用getParameter()方法读取简单参数,并使用getInputStream()方法读取来自客户端的二进制数据流来处理请求。 使用JSP读取表单数据 JSP根据情况使用以下方法自动处理表单数据解析- getParameter():您调用request.getPara