Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по CLOB и DBMS_LOB.SUBSTR / 11 сообщений из 11, страница 1 из 1
09.04.2009, 12:49
    #35922394
DmitryRasskazov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по CLOB и DBMS_LOB.SUBSTR
Доброго времени суток коллеги.

Два вопроса по CLOB.
Есть нуклеотидная последовательность вида:
Код: plaintext
1.
AATTTTTGCCCCTTTAACCCC......
Длиной до нескольких миллионов символов. Хранится она в виде CLOB. Пользователь выбирает определенные участки этой последовательности (т.е. вырезает некоторые подпоследовательности ) .

Первая проблема в том что функция DBMS_LOB.SUBSTR() возвращает VARCHAR2 -> т.е. возвращаемый результат ограничен 4К символов.
Вторая проблема в том что зачастую эти подпоследовательности нужно "разворачивать" (т.е. делать REVERSE) -> т.е. тоже сталкиваемся с ограничением типа VARCHAR2

Можно ли как-то обойти эти ограничения? Сейчас приходится считывать кусками по 4000 символов.. Как-то это неудобно..
...
Рейтинг: 0 / 0
09.04.2009, 12:52
    #35922403
Lecter
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по CLOB и DBMS_LOB.SUBSTR
DmitryRasskazov,

Боюсь придется мирится с такими ограничениями.
Вообще я б в таком случаи юзал массив( блин привычки вторая натура ), то есть CREATE TYPE bla-bla AS TABLE OF VARCHAR2(4000)...
...
Рейтинг: 0 / 0
09.04.2009, 13:21
    #35922512
AlexVer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по CLOB и DBMS_LOB.SUBSTR
авторсчитывать кусками по 4000 символов
В pl/sql максимальная длина varchar2 = 32767

С уважением,
...
Рейтинг: 0 / 0
09.04.2009, 14:08
    #35922704
DmitryRasskazov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по CLOB и DBMS_LOB.SUBSTR
LecterDmitryRasskazov,
.....
Вообще я б в таком случаи юзал массив( блин привычки вторая натура ), то есть CREATE TYPE bla-bla AS TABLE OF VARCHAR2(4000)...
С такой структурой данных гораздо неудобнее работать. К тому-же т.к. нуклеотидных последовательностей (геномов) может быть много (много видов организмов, у каждого вида свой набор хромосом, каждая хромосома содержит нуклеотидную последовательность большой длины) в результате получаем большую просадку по производительности при обращении к таким таблицам.

AlexVer
Да, точно, 32767. Просто я не работаю напрямую с PL/SQL VARCHAR2 типом.
...
Рейтинг: 0 / 0
09.04.2009, 14:31
    #35922810
Двоюшник
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по CLOB и DBMS_LOB.SUBSTR
DmitryRasskazov,

еще можно посмотреть в сторону DBMS_LOB.COPY
...
Рейтинг: 0 / 0
10.04.2009, 09:54
    #35924175
Evgeny_Z
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по CLOB и DBMS_LOB.SUBSTR
В 10-ке для работы с LOB-ами можно использовать стандартные функции SQL.

substr(ваш_clob,1,40000) вернет CLOB с заданным кол-вом символов
...
Рейтинг: 0 / 0
10.04.2009, 13:03
    #35924800
Вопрос по CLOB и DBMS_LOB.SUBSTR
Evgeny_Z,

что то не припоминаю что бы субстр c обьемом выше 32...
...
Рейтинг: 0 / 0
10.04.2009, 13:06
    #35924807
DmitryRasskazov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по CLOB и DBMS_LOB.SUBSTR
мимоходил, увидел

На самом деле работает. спасибо Evgeny_Z за подсказку.

Осталась только проблема с "разворотом " строки размером больше 4000 символов, приходится разворачивать частями.
...
Рейтинг: 0 / 0
10.04.2009, 13:20
    #35924857
Вопрос по CLOB и DBMS_LOB.SUBSTR
DmitryRasskazov,

я имел ввиду выше 32 кб
а работает оно по тому что трансформирует в варчар
...
Рейтинг: 0 / 0
10.04.2009, 13:32
    #35924899
DmitryRasskazov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по CLOB и DBMS_LOB.SUBSTR
мимоходил, увидел,
не понимаю что Вы имеете в виду..
запрашиваю
Код: plaintext
SELECT  LENGTH(SUBSTR(CHROM_SEQUENCE, 63556667 , 50000 ))  FROM CHROMOSOME_SRC  

возвращает:

Код: plaintext
 50000 
...
Рейтинг: 0 / 0
10.04.2009, 13:53
    #35924970
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вопрос по CLOB и DBMS_LOB.SUBSTR
DmitryRasskazov,

вам для счастья всего-то и осталось сделать за пару минут плскл функцию, а-ля
Код: plaintext
clob_reverse (p in clob) return clob
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Вопрос по CLOB и DBMS_LOB.SUBSTR / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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