powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Java->poi->big Workbook->oracle(blob) и обратно
8 сообщений из 8, страница 1 из 1
Java->poi->big Workbook->oracle(blob) и обратно
    #39614014
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, коллеги!

У меня выполняется запрос в результате которого получается большой объем данных (много строк).
Полученные данные я запихиваю в Excel - SXSSFWorkbook .
Далее всю книгу превращаю в ByteArrayOutputStream и запихиваю в BLOB.

В итоге у меня получается BLOB размером 92 824 391 bytes (~100 mb)

Далее, по кнопке я читаю BLOB, т.е. получаю ByteArrayInputStream и мне нужно превратить этот массив в Workbook , чтобы сохранить его на комп. и у меня этого не получается. java.lang.OutOfMemoryError: Java heap space

Пробовал разными способами:

1. XSSFWorkbook book = new XSSFWorkbook(bais);
2. Workbook workbook = WorkbookFactory.create(bais);
3. OPCPackage opcPackage = OPCPackage.open(bais);
4. POIFSFileSystem fsis = new POIFSFileSystem(bais); // в этом случает, другое исключение (org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF))

Может кто знает как сделать хорошо? )
Спасибо!
...
Рейтинг: 0 / 0
Java->poi->big Workbook->oracle(blob) и обратно
    #39614020
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVДалее, по кнопке я читаю BLOB, т.е. получаю ByteArrayInputStream и мне нужно превратить этот массив в Workbook , чтобы сохранить его на комп. и у меня этого не получается.
Здесь попахивает заблуждением. Чтобы сохранить данные из BLOB в файл совсем не обязательно эти данные парсить.
...
Рейтинг: 0 / 0
Java->poi->big Workbook->oracle(blob) и обратно
    #39614021
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV...
java.lang.OutOfMemoryError: Java heap space
...


Увеличить память для JVM не предлагать?
...
Рейтинг: 0 / 0
Java->poi->big Workbook->oracle(blob) и обратно
    #39614024
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz...Здесь попахивает заблуждением. Чтобы сохранить данные из BLOB в файл совсем не обязательно эти данные парсить.
ну и да, как бы вообще одной функцией делает (если взять Apache IOUtils)

https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/IOUtils.html#copy(java.io.InputStream, java.io.OutputStream)
...
Рейтинг: 0 / 0
Java->poi->big Workbook->oracle(blob) и обратно
    #39614034
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На стек оверфлов полно тем и ответов по Subj. Только остается непонятно, что же действительно нужно автору
...
Рейтинг: 0 / 0
Java->poi->big Workbook->oracle(blob) и обратно
    #39614066
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV,
Делай эксель файл только на выходе клиенту. Не сохраняй его в базе.
...
Рейтинг: 0 / 0
Java->poi->big Workbook->oracle(blob) и обратно
    #39614069
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev, Blazkowicz,

Да, спасибо получилось через IOUtils.copy. Просто я записывал книгу через SXSSFWorkbook.write(<byte array>) поэтому подумал что он свой, специфичиский образ делает. Соответственно ожидал что и чтение также должно происходить (сначало превращаем обратно в книгу, а потом сохраняем в файл)
...
Рейтинг: 0 / 0
Java->poi->big Workbook->oracle(blob) и обратно
    #39614071
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Ок, спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Java->poi->big Workbook->oracle(blob) и обратно
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]