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

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


Увеличить память для JVM не предлагать?
...
Рейтинг: 0 / 0
13.03.2018, 11:51
    #39614024
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java->poi->big Workbook->oracle(blob) и обратно
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
13.03.2018, 12:03
    #39614034
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java->poi->big Workbook->oracle(blob) и обратно
На стек оверфлов полно тем и ответов по Subj. Только остается непонятно, что же действительно нужно автору
...
Рейтинг: 0 / 0
13.03.2018, 13:00
    #39614066
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java->poi->big Workbook->oracle(blob) и обратно
AndronovMV,
Делай эксель файл только на выходе клиенту. Не сохраняй его в базе.
...
Рейтинг: 0 / 0
13.03.2018, 13:11
    #39614069
AndronovMV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Java->poi->big Workbook->oracle(blob) и обратно
Leonid Kudryavtsev, Blazkowicz,

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


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