gpt4 book ai didi

Java Spring Batch如何从postgres读取数据,然后一步步写入数据

转载 作者:行者123 更新时间:2023-12-02 11:01:05 25 4
gpt4 key购买 nike

无法在网上找到任何示例,但我想做的基本上是使用 Java Spring Batch 读取 postgres 中的整个表,然后对于每一行,在其他地方发布该数据。我读过https://spring.io/guides/gs/batch-processing/但不知道如何做到这一点。我还想留出数据检索的空间,这样我的数据库就不会被阻塞。有很多从 csv 文件读取的示例,但找不到如何从存储库读取。

最佳答案

要读取该表,您需要使用 Spring Batch 提供的阅读器之一 - 要么使用 - org.springframework.batch.item.data.RepositoryItemReaderorg.springframework.batch.item.database.JdbcPagingItemReader

两个阅读器都实现分页,因此您的数据库读取是逐页进行的,而不是一次读取整个表。

RepositoryItemReadersetPageSize(int pageSize)方法和类似的方法在JdbcPagingItemReader中有也。表格中必须有一列可以进行排序以实现分页。

尝试使用这两个阅读器查找代码示例。

这些读取器将读取一个页面一次,将其保留在内存中,并处理单个项目,直到达到 block 大小,然后提交。在一页完全完成之前,不会发生下一次数据库读取。一般来说,为了获得最佳性能, block 大小需要比页面大小小几倍,例如阅读器页面大小 - 1000 & block 大小 = 100,因此 1000 个项目将被读取一次并以 100 - 100 个项目的 block 形式提交。

当所有 1000 个先前读取都已传递到处理器时,就会发生下一次数据库读取。

then for each row, publish that data elsewhere

要完成上述任务,您必须将 block 大小设置为 1,然后在 writer 中,您可以做任何您想做的事情,这样您的事务将为每个项目提交。

关于Java Spring Batch如何从postgres读取数据,然后一步步写入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51316162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com