java - 如何使用 Spring Boot Batch Job 更新数据库中的海量数据

标签 java spring-boot spring-batch spring-batch-excel

我想更新庞大的用户数据库。

下面是包含20k用户记录的表格格式。

enter image description here

我有一张 Excel 工作表,其中包含如下新数据。该数据不特定于用户。这是所有用户共有的主数据。

enter image description here

任务是从表中读取用户特定数据,然后从 Excel 工作表中读取与旧数据相对应的新数据,然后更新同一表中的新数据 对于该用户。

例如 -

  • 第 1 步 - 从数据库读取数据(use_id、node_id 和 kmap_type) user_id 95961800
  • 第2步 - 从Excel中读取与数据库对应的新值 node_id(9908) 分别是 7707,1000,7707
  • 第 3 步 - 为同一用户更新同一表中的这些新值 KMAP_TYPE 分别为 SUBINDUSTRY、FUNCTION 和 ROLE。

我正在考虑为此使用 Spring Boot 批处理服务。因为我对java和spring boot技术的了解一般

有人可以建议我应该如何继续吗?

提前致谢。

最佳答案

我不知道 Spring 是否有任何功能可以完成这样的工作。

我会做的是:

1)使用Apache POI库让我们轻松处理Excel文件。

2)读取Excel文件中的每个值(如果我很好地理解你所说的,那应该是一个新值)

3)用新值更新数据库值

以下是使用 Apache POI 可以完成的操作的代码示例:您在 src/test/resources/Excel 文件夹(例如)中获取一个 Excel 文件,并将其存储在“Workbook”对象中。

@Test
public void FindExistingExcelFileTest() {
    System.out.println("\n----- FindExistingExcelFile -----");
    String pathExcel = "src/test/resources/Excel/";
    String fileName = "yourExcelFileHere.xlsx";
    File fileExcel = new File(pathExcel + fileName);    
    try {
        InputStream inp = new FileInputStream(fileExcel);
        Workbook wb = WorkbookFactory.create(inp);
        Sheet sheet1 = wb.getSheetAt(0);
        System.out.println("Sheet name = " + sheet1.getSheetName());
        Assert.assertNotNull(sheet1);
        wb.close();
    } catch (IOException | InvalidFormatException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

然后您可以使用“Row”或“Cell”对象处理数据。

尝试一下,然后返回此处了解更多详细信息。

关于java - 如何使用 Spring Boot Batch Job 更新数据库中的海量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54305592/

相关文章:

java - Android Camera2 API YUV_420_888 到 JPEG

java - ArrayList 到用户定义的类数组

Spring Boot 隐藏或加密密码的最佳实践

java - LibGDX Box2D RayCast fatal error

java - 使用 KeyListeners 更好地进行 JLabel 移动

java - 在 CRaSH shell(Spring-boot 远程 shell)中过滤 Spring beans

java - Spring Boot 多数据源 - 只工作一个

spring - java - 如何为spring批处理数据和业务数据配置单独的数据源?我应该这样做吗?

java - JMS Reader/Processor/Writer 步骤之后的 Spring Batch 步骤未触发

Spring XD -- xd-singlenode启动失败