Как лениво получить, обработать каждую строку и распечатать результаты в формате CSV в jOOQ?JAVA

Программисты JAVA общаются здесь
Anonymous
Как лениво получить, обработать каждую строку и распечатать результаты в формате CSV в jOOQ?

Сообщение Anonymous »

Сейчас у меня есть такой код:

Код: Выделить всё

try (var cursor = query().fetchSize(1000).fetchLazy()) {
cursor.formatCSV(out);
}
Делает именно то, что я хочу — лениво извлекает (мои результаты огромны и никогда не помещаются в памяти) и правильно форматирует CSV.
Однако теперь мне нужно предварительно обработать записи таким образом, чтобы некоторые записи были разделены на множество.
Аналогично:

Код: Выделить всё

try (var stream = query().fetchSize(1000).stream()) {
stream
.mapMulti(...) //split the records as needed
.forEach(r -> r.formatCSV(out));
}
но здесь есть ряд проблем. Во-первых, я получу заголовок либо напечатанным для каждой строки, либо никогда, в зависимости от передаваемого формата. Кроме того, вызов formatCSV() для записи сначала помещает запись в Result, что в моем случае означает выделение десятков миллионов объектов практически даром.
Как я могу решить эти проблемы?

Вернуться в «JAVA»