Как обновить огромные данные в базе данных с помощью Spring Boot Batch Job - PullRequest
0 голосов
/ 22 января 2019

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

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

enter image description here

У меня есть один лист Excel, в котором есть новые данные, как показано ниже. Эти данные не являются специфическими для пользователя. Это основные данные, общие для всех пользователей.

enter image description here

Задача - прочитать пользовательские данные из таблицы, затем прочитать новые данные из таблицы Excel, соответствующие старым данным, после этого обновить новые данные в той же таблице. для этого пользователя.

Например -

  • Шаг 1 - Считать данные (use_id, node_id и kmap_type) из базы данных для user_id 95961800
  • Шаг 2 - Чтение нового значения из Excel, соответствующего базе данных идентификатор_узла (9908), который составляет 7707,1000,7707
  • Шаг 3 - Обновите это новое значение в той же таблице для того же пользователя с KMAP_TYPE как SUBINDUSTRY, FUNCTION и ROLE соответственно.

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

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

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

1 Ответ

0 голосов
/ 22 января 2019

Я не знаю, есть ли какие-нибудь функции 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'.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...