powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблемы с кодировкой в java
14 сообщений из 39, страница 2 из 2
Проблемы с кодировкой в java
    #38283428
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
just_vladimirInsane_1990,
а чем getCharacterStream не подходит? В самый край можно и deprecated метод getUnicodeStream, если нужен именно InputStream.
А так по идее CharacterStream для CLOB, BinaryStream для BLOB и все замечательно.
Ему нужно в бинарное хранилище поместить. Говорит что долго.
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283429
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати интересно. Нужно взять CLOB в Oracle RDBMS и поместить в LOB в Oracle NoSQL. Возникает вопрос. Зачем тут JDBC?
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283434
Insane_1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

а как иначе мне связываться с базой реляционной? =) я беру ведь не только LOB из РБД, а то, что выберет пользователь.

с BLOB все хорошо, там Binary Stream, там байты, и в хранилище записываются байты.
Если использовать CharacterStream, то это будет дольше чем обычный бинарный, потому что все равно в NoSQL хранятся байты, и будет происходить та же конвертация в байты символов...проще конечно же сразу получать поток байтов.
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283440
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insane_1990Если использовать CharacterStream, то это будет дольше чем обычный бинарный, потому что все равно в NoSQL хранятся байты, и будет происходить та же конвертация в байты символов...проще конечно же сразу получать поток байтов.
Вы меряли? Реально дольше просто вычитать текст? Только не вычитывайте в String, заверните в BufferedReader и вычитайте посимвольно. Действительно ли сильно дольше в сравнении с BLOB?
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283441
just_vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insane_1990,
1. А с getUnicodeStream то работает все таки или нет?
2. Как часто выполняются эти операции, какие объемы данных, уверены, что не занимаетесь экономией на спичках, пытаясь работать именно с BinaryStream
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283459
Insane_1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
just_vladimir,

метод getUnicodeStream выдал ошибку: getUnicodeStream not implemented for class oracle.jdbc.driver.T4CClobAccessor.

по поводу быстроты переноса, сейчас отпишусь
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283481
Insane_1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

смотрите, как я сделал обычные методы, без getBinaryStream.

Я просто смотрю какой тип столбца, и в зависимости от этого делаю поток:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
String type = String.valueOf(getkeyResultSet.getMetaData().getColumnTypeName(2));
InputStream simpleValueStream;
if (type.equals("BLOB"))
{
Blob blob = getkeyResultSet.getBlob(2);
simpleValueStream = blob.getBinaryStream();
} else
{
Value mySimpleValue = Support.ParseKey.ParseValue(getkeyResultSet.getString(2), lobFlag);
simpleValueStream = new ByteArrayInputStream(mySimpleValue.getValue());
}

try {
//PutLOB into NoSQL Storage
dataToSend.put(new KV<InputStream>(myKeySimple,simpleValueStream));
...



Support.ParseKey.ParseValue - метод, который преобразует текст в байты, и возвращает уже набор байт....

возможно я тут делаю что то лишнее, потому так долго. Но могу сказать одно, сейчас вот программа работает.
Когда идет binaryStream - записывается примерно по 4000 в секунду, сейчас же - максимум по 30 в секунду.
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283497
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insane_1990,

Ещё бы. Я же говорил выше не используйте ничего связаного со String. ByteArray*Stream тоже не нужен.
Берете вот это класс
http://commons.apache.org/proper/commons-io/javadocs/api-release/index.html?org/apache/commons/io/input/package-summary.html
и для CLOB получаете InputStream вот так:
new ReaderInputStream(new BufferedReader(resultSet.getCharacterStream(2)));
Далее от работы с BLOB ничем не отличается.

Вы же вместо этого читаете целиком всё в память. Зачем???
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283568
Insane_1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Спасибо большое! Теперь посыпались ислючения Java heap space... =(

И все же, интересно что не так с binaryStream
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283581
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insane_1990Спасибо большое! Теперь посыпались ислючения Java heap space... =(

Раньше не было???

Insane_1990И все же, интересно что не так с binaryStream
Где-то внутри драйвера, или даже на уровне базы, он пытается текст интерпретировать в ASCII или другой 8-битной кодировке. При этом в UTF он видит символы вне ASCII range и заменяет их вопросами. В общем, это лучше уже оракловедов пинать.

Это, кстати, наводит на мысль что данные уже имеются в виде текста, а getBinaryStream читает именно текст. Поэтому никакого прироста к производительности он не даст.
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283596
Insane_1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
нет, раньше не было...
сейчас пишет:

Exception in thread "Thread-5" Exception in thread "Thread-9" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Thread-17" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Thread-11" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Thread-7" java.lang.OutOfMemoryError: Java heap space
Exception in thread "Thread-21" java.lang.OutOfMemoryError: Java heap space

на моменте
Код: java
1.
ris = new ReaderInputStream(new BufferedReader(getkeyResultSet.getCharacterStream(2)));
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283609
Insane_1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
хммм... убрал new BufferedReader.

оставил просто ris = new ReaderInputStream(getkeyResultSet.getCharacterStream(2));

стало все окей...325 000 CLOB за 1 минуту
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283610
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Insane_1990,

Странно. Кстати, в доке написано BufferedReader не нужен. Читали? Там внутри и так есть буфер на 1024 по-умолчанию.
...
Рейтинг: 0 / 0
Проблемы с кодировкой в java
    #38283616
Insane_1990
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

=) уже да) Спасибо за помощь.
если выясню, что за фигня с вопросиками, обязательно отпишусь
...
Рейтинг: 0 / 0
14 сообщений из 39, страница 2 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Проблемы с кодировкой в java
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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