Как мне быстрее написать в таблицу Excel Excel apache.poi.xssf? - PullRequest
0 голосов
/ 21 сентября 2018

Я использую jdbcTemplate для запроса к инструменту ETL, извлечения результатов и записи в рабочую таблицу Excel с использованием библиотеки Apache POI.У меня есть от 700 000 до 1 000 000 строк для выборки и записи.

Ранее у меня была следующая настройка:

jdbcTemplate.query(new CustomPreparedStatementCreator(arg), new ResultSetExtractor<Void>() {
    @Override
    public Void extractData(ResultSet rs) {
    while (rs.next()) {... process sequentially ...}
    // caused the connection to remain open for 650 seconds
    // setFetchSize was not set so it was default
}

Теперь у меня есть следующая настройка:

jdbcTemplate.setFetchSize(200);
SqlRowSet srs = jdbcTemplate.queryForRowSet(sql);
// all the rows are fetched in 60 seconds into memory now
while (srs.next()) {... process sequentially ...} // still takes 600 seconds to write to the worksheet

Теперь мои проблемы:

  1. Как использовать API Java 8 parallelStream для обработки всех строк внутри объекта SqlRowSet?Есть ли альтернатива?
  2. Как быстрее написать на лист (org.apache.poi.xssf.streaming.SXSSFSheet)?
...