簡體   English   中英

Java Spring Batch如何從Postgres中讀取然后在步驟中寫入數據

[英]Java Spring Batch how to read from postgres and then write data in step

在網上找不到任何示例,但是我想做的基本上是使用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

兩個閱讀器都實現了分頁,因此您的數據庫讀取是逐頁進行的,而不是整個表都一次被讀取。

RepositoryItemReader具有setPageSize(int pageSize)方法,並且JdbcPagingItemReader也存在類似的方法。 表中必須有一列可以對其進行排序以實現分頁。

嘗試使用這兩個閱讀器查找代碼示例。

這些閱讀器將閱讀一次頁面,將其保存在內存中,並處理單個項目直到達到塊大小然后進行提交。 在一頁完全完成之前,不會進行下一個DB讀取。 通常,為了獲得最佳性能,塊大小需要比頁面大小小幾倍,例如讀取器頁面大小-1000&塊大小= 100,因此將讀取1000個項目,並以100-100個項目的大小提交。

當前一千次讀取全部傳遞到處理器時,將發生下一次DB讀取。

然后將每一行的數據發布到其他位置

要完成上述任務,您必須將塊大小設置為1,然后在writer中,您可以執行任何您想做的事情,這樣就可以為每個項目提交事務。

找不到在線示例

您是否在這里看到了官方樣本: https//github.com/spring-projects/spring-batch/tree/master/spring-batch-samples

有許多示例說明了如何從數據庫讀取數據:

我想要做的基本上是使用Java Spring Batch在postgres中讀取整個表,然后對於每一行,將該數據發布到其他位置。

先前示例中的所有作業都至少具有一個步驟,該步驟從數據庫讀取數據並將其寫入其他位置。

我也想擴大數據檢索的空間,以免數據庫被阻塞

我建議使用其中一個分頁項讀取器(請參閱https://docs.spring.io/spring-batch/4.0.x/reference/html/readersAndWriters.html#pagingItemReaders )讀取頁面中的數據而不打開游標在整個桌子上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM