我想更新庞大的用户数据库。
下面是包含20k用户记录的表格格式。
我有一张 Excel 工作表,其中包含如下新数据。该数据不特定于用户。这是所有用户共有的主数据。
任务是从表中读取用户特定数据,然后从 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/