3

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

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

在此处输入图像描述

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

在此处输入图像描述

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

例如 -

  • 第 1 步 - 从数据库中读取 user_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技术方面知识一般

谁能建议我应该如何在这里进行?

提前致谢。

4

1 回答 1

1

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

我会做的是:

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

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

3)用新值更新数据库值

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

@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();
    }
}

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

试试这个,然后回到这里了解更多细节。

于 2019-01-22T10:31:07.407 回答