powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
25 сообщений из 39, страница 1 из 2
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886645
fragmaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую, форумчане, и всех грызущих и хвостатых, точащих основы СУБД Oracle! Только начинаю постигать вопросы администрирования СУБД Oracle и вот собственно вопрос: можно ли осуществить чтение из текстового файла через SQL/PLSQL запрос, который загружен в BLOB поле таблицы? Есть ли специальные инструменты, пакеты (наподобие DBMS_LOB), чтобы считать текст из BLOB? Если есть, то как это сделать на SQL/PLSQL? Требуется осуществить поиск по ключевым словам в этом текстовом файле и в зависимости от этого выдать сообщение о наличии или отсутствии этих слов.

P.S. Если что, то изначально известно, что в BLOB поле содержится текстовый файл с расширением txt.
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886648
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fragmaker
Только начинаю постигать


Начали с поиска ?
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886651
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fragmaker
осуществить чтение из текстового файла через SQL/PLSQL запрос, который загружен в BLOB поле таблицы?
Кто на ком стоял?
fragmaker
Есть ли специальные инструменты
Чем специальные отличаются от неспециальных?
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886654
fragmaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm, начинал...Пришёл к тому, что, как понял, текстовый файл во время записи в BLOB представляется в двоичной или 16-й системе и считывать данные нужно порционно. А примеры, как это сделать - не нашёл. Плохо искал видимо...Если же что-то путаю, то в какую сторону нужно копать? Просто вообще не понятно, с чего начать. Как выбирать "обычные" сведения из типов CHAR, varchar2, number понятно, а вот с чем есть BLOB - вообще непонятно...Нужно наставить на истинный путь силы
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886656
fragmaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-, хорошо...можно вообще хоть что-нибудь, хотя бы какой-нибудь пример, потому что поиск в Инете не увенчался успехом и непонятно, с чего начать
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886657
fragmaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-, текстовый файл с расширением txt загружен в поле BLOB. Требуется считать его средствами SQL/PLSQL и требуемые слова вывести на экран либо указать, что они есть. Объяснять основы SQL не нужно. Нужны инструменты (любые), которые решат поставленную задачу. И желательно примеры либо наставить на путь силы!
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886658
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886692
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fragmaker
Объяснять основы SQL не нужно.
Для общения на одном языке сначала нужно ознакомиться с азбукой и словарем. Это лучше делать по профессионально писанным книгам и документации.
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886800
MazoHist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886818
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MazoHist

В решении по ссылке профукана важная деталь.
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886877
oragraf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous
В решении по ссылке профукана важная деталь.
Кодировка?
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886879
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
oragraf
andrey_anonymous
В решении по ссылке профукана важная деталь.
Кодировка?

Да
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886882
Фотография Кроик Семён
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fragmaker,

OFF
если там всегда только текст лежит, можно было бы поле сразу CLOB вместо BLOB сделать
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39886890
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроик Семён
сразу CLOB
Если не мелочиться на "если", то varchar2(1) может оказаться еще сразей.
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39888966
fragmaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кроик Семён, нет. В БД может быть подцеплен любой файл, скрипт по выборке именно текстовых файлов уже сделали, теперь надо достать текст. И вот здесь мои познания заканчиваются. Теперь только надежда на богов SQL/PLSQL.
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39889041
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fragmaker
скрипт по выборке именно текстовых файлов уже сделали
Множественное число "сделали" предполагает, что не сам. Если твоему пониманию недоступно условие равенства типа типафайла=текст, то по использованию функции нужно взывать не к просто богам, а к пантеону сингулярности.
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39908285
fragmaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous
MazoHist

В решении по ссылке профукана важная деталь.

А каким образом изменить кодировку после преобразования в CLOB?
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39908294
fragmaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous, привожу пример кода преобразования из BLOB в CLOB
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
declare 
    l_clob         CLOB;
    l_dest_offset  PLS_INTEGER := 1;
    l_src_offset   PLS_INTEGER := 1;
    l_lang_context PLS_INTEGER := DBMS_LOB.default_lang_ctx;
    l_warning      PLS_INTEGER;
    vtextfile blob;
    output_text VARCHAR2(1000);
    chars_read_1 BINARY_INTEGER;
    offset INTEGER;
begin
    select 
        ed.elado_bytes into vtextfile -- поле типа BLOB с текстовым файлом
    from 
        app_applications a,
        app_doc adoc,
        doc_foundations d,
        ela_document ed,
        ela_document_props ep
    where
        a.id = adoc.app_id(+)
        and adoc.doc_id = d.id(+)
        and d.id = ED.ELADO_EXT_ID(+)
        and ED.ELADO_DOCUMENT_ID = ep.elado_doc_id(+)
        and ed.ELADO_EXT_ENT_NAME(+) = 'DOC_FOUNDATIONS'
        and d.id = 19966375000; 
    
    -- переводим BLOB в CLOB
    DBMS_LOB.createTemporary(
    lob_loc => l_clob,
    cache   => TRUE);

    DBMS_LOB.converttoclob(
    dest_lob      => l_clob,
    src_blob      => vtextfile,
    amount        => DBMS_LOB.lobmaxsize,
    dest_offset   => l_dest_offset,
    src_offset    => l_src_offset, 
    blob_csid     => DBMS_LOB.default_csid,
    lang_context  => l_lang_context,
    warning       => l_warning);
    
    offset := 1;
    chars_read_1 := 300;
    
    -- Пытаемся прочитать первые 300 символов.
    DBMS_LOB.READ(l_clob, chars_read_1, offset, output_text);
    DBMS_OUTPUT.PUT_LINE(output_text);  
end;


На выводе получаются кракозябры
Код: xml
1.
PK


Текстовый файл в формате UTF-8. Каким образом преобразовать в нормальный текст?
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39908297
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала нужно убедиться, что в исходных данных текст.
Заголовок похож на заголовок бинарного zip-файла.
А дальше читать про преобразование кодировок .
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39908298
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fragmaker
Код: xml
1.
PK

Текстовый файл в формате UTF-8. Каким образом преобразовать в нормальный текст?
Распаковать zip.
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39908333
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmdmdm
Заголовок похож на заголовок бинарного zip-файла.
Или эксел 504B0304
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39908375
irbis_al
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fragmaker

Текстовый файл в формате UTF-8. Каким образом преобразовать в нормальный текст?

Ну а база в какой кодировке ведь
Код: plsql
1.
 l_lang_context PLS_INTEGER := DBMS_LOB.default_lang_ctx;


даёт текущую.(И если оне не AL32UTF8 то будет лажа)
Вот тут ниже по ссылке преобразовывают.
https://dba.stackexchange.com/questions/175411/convert-returns-garbage-with-clobs-in-oracle
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39908609
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fragmaker
andrey_anonymous, привожу пример кода преобразования из BLOB в CLOB
Код: plsql
1.
    blob_csid     => DBMS_LOB.default_csid, --вот тут и надо указать идентификатор кодировки BLOB.


Текстовый файл в формате UTF-8. Каким образом преобразовать в нормальный текст?


Но для начала обратите внимание на сообщения коллег о нетекстовой природе содержимого BLOB, я бы тоже предположил ZIP.
Его, кстати, можно распаковать прямо в БД, если лицензированного процессора не жаль
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39908822
fragmaker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
dmdmdm, и действительно..., скорей всего в нашей БД данные предварительно заархивированы и помещены в zip файл, потому что при элементарных проверках
Код: plsql
1.
DBMS_LOB.SUBSTR(ed.elado_bytes, 30)


видим текстовую сигнатуру (епта, новые слова выучил!!! ...)
Код: plsql
1.
504B0304140000000800A93E6E4EF14C5B9E710200002C0700000C002400


а в БД под интерфейсом виден файл *.txt.

Я то вначале подумал, что это Oracle на меня на японо-корея-китайском языке обругалась, а оно вон что значит - ТЕКСТОВАЯ СИГНАТУРА!
...
Рейтинг: 0 / 0
Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
    #39908823
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fragmaker
а в БД под интерфейсом виден файл *.txt.
Кулибин, обратись к разработчикам, пока ещё чего-нибудь не сломал.
...
Рейтинг: 0 / 0
25 сообщений из 39, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Чтение текстового файла из поля с типом BLOB средствами языка SQL/PLSQL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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