Как обновить огромные данные в базе данных с помощью Spring Boot Batch Job

Я хочу обновить огромную базу данных пользователей.

Ниже приведен формат таблицы, который содержит 20 тыс. Записей пользователей.

У меня есть один лист 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 соответственно.

Я думаю об использовании весеннего загрузочного пакетного сервиса для этого. потому что у меня есть средние знания в технологии Java и весенней загрузки

Кто-нибудь может подсказать, пожалуйста, как мне поступить здесь?

Заранее спасибо.

1 ответ

Я не знаю, есть ли какие-нибудь функции Spring для такой работы.

Что бы я сделал, это:

1) использовать Apache POI lib, что позволяет легко обрабатывать файл Excel.

2) прочитайте каждое значение в файле Excel (если я хорошо понял, что вы сказали, это может быть новое значение)

3) обновить значения базы данных новыми

Вот пример кода того, что можно сделать с помощью Apache POI: вы получаете файл Excel в папке src/test/resources/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();
    }
}

Затем вы можете обрабатывать данные с помощью объекта "Row" или "Cell".

Попробуйте это и вернитесь сюда для более подробной информации.

Другие вопросы по тегам