繁体   English   中英

如何使用Spring Boot Batch Job更新数据库中的大数据

[英]How to update huge data in database using Spring Boot Batch Job

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

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

在此处输入图片说明

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

在此处输入图片说明

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

例如 -

  • 步骤1-从数据库读取用户ID 95961800的数据(use_id,node_id和kmap_type)
  • 步骤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();
    }
}

然后,您可以使用“行”或“单元格”对象处理数据。

尝试此操作,然后返回此处获取更多详细信息。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM