powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Фаил записать в базу/таблицу с полями СLOB и BLOB
39 сообщений из 39, показаны все 2 страниц
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39261903
Имеется таблица
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
create table IMP
(
FILENAME varchar2(256), --имя файла
ROWNUMBER NUMBER(38), --число строки содержимого файла, записанного в таблицу
TEXT CLOB,  текстовое содержимое файла
BINARIES BLOB --бинарное содержимое файла

);



Нужно содержимое файла (построчно) записать в таблицу IMP.
Причем, если строчка начинается с "ТЕ", тогда содержимое строки записывается в поле TEXT (CLOB) с соответствующим номером строки в ROWNUMBER.
Если же сточка начинается с BI, тогда эта строка записывается в поле BINARIES (BLOB) с соответствующим номером строки в ROWNUMBER.

Можете подсказать в каком направление лучше всего двигаться. А я уж дальше сам дотумкаю...

Пример файла прилагаю (TEXT_AND_B).
Имеющиеся в распоряжение инструменты:
Oracle 12.1
ODI 12.2

P.S. Имена файлов разные. С помощью Unix-скрипта считыва имена в Текст-файл, а затем в Oracle-таблицу.
Заранее спасибо.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39261912
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Требование "построчно" непонятно.
Требование "построчно" применительно к бинарнику нарушит бинарник.
А так - SQL loader на здоровье.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39261923
dmdmdm,

Информация в файле текстовая. Только в строках с BI записанно бинарное выражение (около 100 byte).
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39261925
Hans Christian Andersen,

Строчки заканчиваются CRLF (carriage return)
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39261928
Hans Christian Andersen,

еще раз фаил
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39261933
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian AndersenС помощью Unix-скрипта считыва имена в Текст-файл, а затем в Oracle-таблицу.sqlldr на список имен и файлы должны лежать в ОС.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39261945
-2-,

files и список файлов лежит в ос.
А как будет выглядеть SQLLOADER? Как быть с проверкой содержимого строк, что бы их в нужное поле (CLOB или BLOB) записывать?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39262002
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian Andersen-2-,

files и список файлов лежит в ос.
А как будет выглядеть SQLLOADER? Как быть с проверкой содержимого строк, что бы их в нужное поле (CLOB или BLOB) записывать?
какие-то структуры у вас дурно-замароченные
вы всегда лезете под вагон, чтобы прочитать инструкцию куда/чего вываливать из вагона - в унитаз / в партер ?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39262016
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian AndersenА как будет выглядеть SQLLOADER?Приблизительно как нарисован в документации - Utilities, раздел про лобы и раздел про использование sql-операторов.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263075
-2-,

как можно построчно загрузить данные файла в BLOB-поле, если известно, что строки заканчиваютя CRLF.
Как будет в этом случае выглядеть CTL-File?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263076
ora601
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian Andersen-2-,

как можно построчно загрузить данные файла в BLOB-поле, если известно, что строки заканчиваютя CRLF.
Как будет в этом случае выглядеть CTL-File?

UTL_FILE + DBMS_LOB Можно.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263269
ora601,

А можно примерчик?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263362
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В поиск "UTL_FILE + DBMS_LOB" вводили?
Хотя бы первую найденную статью прочли?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263370
dmdmdm,

Конечно вводил.
Я загрузил binаry File в таблицу с Blob.
Деление содержимого File до crlf производит бы с помощью Doms_Lob.instr и Dbms_Lob.substr.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263442
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian AndersenДеление содержимого File до crlf производит бы с помощью Doms_Lob.instr и Dbms_Lob.substr.Если blob большой, то есть причина делать его нарезку на строки через буфер varchar2 вместо Dbms_Lob... Будет заметно шустрее.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263468
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Egoрblob … через буфер varchar2Ну-ну.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263471
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicНу-ну. Вы что-то имеете против?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263475
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EgoрElicНу-ну. Вы что-то имеете против?Гланды через ж… не удаляют. Обычно.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263478
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicГланды через ж… не удаляют. Обычно.Однако странные вы операторы в plsql используете.
Какие-нибудь реальные поводы для вашего заявления "ну-ну" у вас есть?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263483
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EgoрElicГланды через ж… не удаляют. Обычно.Однако странные вы операторы в plsql используете.
Какие-нибудь реальные поводы для вашего заявления "ну-ну" у вас есть?Чудак, с большими бинарными данными принято работать через буфера бинарных же типов.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263490
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicЧудак, с большими бинарными данными принято работать через буфера бинарных же типов.Все было бы так, если бы substr и instr для varchar2 не работали бы в разы быстрее, чем их аналоги для лобов.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263499
Egoр,

blob-файлы очень маленькие (15 КВ).
Фаил загружаю в поле blob с SQLLOADER.
Правда, мне это решение не нравится, т.к. что бы делить фаил построчно, нужно, для начала, из таблицы выгрузить содержимое блоб-поля в переменную BLOB. Поэтому воспользуюсь решением, приведенным в форуме от ShankarViji

https://community.oracle.com/thread/2400953?tstart=0

Можете привести пример на разбитие файла по crlf?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263521
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian Andersenblob-файлы очень маленькие (15 КВ).Маленьких файлов много?
Hans Christian AndersenМожете привести пример на разбитие файла по crlf?У меня примерно такая процедура:
Код: 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.
50.
51.
52.
create or replace function fed_rsbu.Get_Externaldata_Strings_Pipe(
   p_Data in blob,
   p_Start_Row in number default 1,
   p_ReturnRowQty in number default null,
   p_end_row_symbol in varchar2 default chr(10))
  return sys.ORA_MINING_VARCHAR2_NT
  pipelined is
  v_RowNum number := 1;
  v_StartString number := 1;
  v_EndString number;
  v_blk varchar2(32767);
  v_blk_len number;
  v_StartBlk number := 1;
  v_EndBlk number;
  v_String varchar2(32767);
  v_tot_len number := dbms_lob.getlength(p_Data);
  v_end_row raw(10) := UTL_raw.cast_to_raw(p_end_row_symbol);
begin

  if v_tot_len = 0 then
    pipe row(null);
  end if;

  while v_StartString <= v_tot_len loop
    v_EndString := dbms_lob.instr(p_Data, v_end_row, v_StartString + 32000);
    if v_EndString is null or v_EndString = 0 or v_EndString <= v_StartString then
      v_EndString := v_tot_len + 1;
    end if;
    -- v_blk := trim(UTL_raw.cast_to_varchar2(dbms_lob.substr(p_Data, v_EndString - v_StartString, v_StartString)));
    v_blk := UTL_raw.cast_to_varchar2(dbms_lob.substr(p_Data, v_EndString - v_StartString, v_StartString));
    v_blk_len := length(v_blk);
    v_StartBlk := 1;
    while v_StartBlk <= v_blk_len loop
      v_EndBlk := instr(v_blk, p_end_row_symbol, v_StartBlk);
      if v_EndBlk is null or v_EndBlk = 0 or v_EndBlk <= v_StartBlk then
        v_EndBlk := v_blk_len + 1;
      end if;
      -- v_String := trim(substr(v_blk, v_StartBlk, v_EndBlk - v_StartBlk));
      v_String := substr(v_blk, v_StartBlk, v_EndBlk - v_StartBlk);
      v_StartBlk := v_EndBlk + nvl(length(p_end_row_symbol), 1);
      v_RowNum := v_RowNum + 1;
      if v_RowNum >= p_Start_Row then
        pipe row(substr(v_String,1,4000));
      end if;
      if v_RowNum > p_ReturnRowQty then
        return;
      end if;
    end loop;
    v_StartString := v_EndString + nvl(length(p_end_row_symbol), 1);
  end loop;
  return;
end Get_Externaldata_Strings_Pipe;

...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263540
Egoр,

файлов мало. Твое решение не совсем подходит. Ты разбиваешь блоб на стринги. А мне нужно с Raw работать, т.к. в файле есть бинарная составляющая .
Вот еще раз задание:
Нужно содержимое файла (построчно) записать в таблицу IMP.
Причем, если строчка начинается с "ТЕ", тогда содержимое строки записывается в поле TEXT (CLOB) с соответствующим номером строки в ROWNUMBER.
Если же сточка начинается с BI, тогда эта строка записывается в поле BINARIES (BLOB) с соответствующим номером строки в ROWNUMBER.
Строчки заканчиваются CRLF (carriage return line feed)
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263560
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian Andersen,

Тогда свой разборщик напишите, это, имхо, не сложно.
Обратите внимание, если вас внутри строки, начинающейся с BI, может встретиться CRLF,
то нужно как-то отличать окончание BI-строки от содержимого BI-строки?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263567
Egoр,

блин. Топчусь на месте.Решение должно быть простое...
А что если с SQLLOADER решить задание?
Может ли что то в этом роде работать

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
load data
infile 'TEXT_AND_B'
into table IMP truncate
when (1:2) = 'TE'
(
  ROWNUMBER     recnum
, TEXT      raw(1000000)
)
into table xy truncate
when (1:2) = 'BI'
(
  ROWNUMBER    recnum
, BINARIES      raw(1000000)
)
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263571
EgoрHans Christian Andersen,

Тогда свой разборщик напишите, это, имхо, не сложно.
Обратите внимание, если вас внутри строки, начинающейся с BI, может встретиться CRLF,
то нужно как-то отличать окончание BI-строки от содержимого BI-строки?

CRLF должен появиться только в конце строки.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263588
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hans Christian Andersenблин. Топчусь на месте.Решение должно быть простое...С тех пор как мы поставили загрузку lob-данных на поток, вопросы по их сложной предварительной обработке снялись сами собой.
Весь процесс внутри БД и sqlloader больше не применяем.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263614
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EgoрElicЧудак, с большими бинарными данными принято работать через буфера бинарных же типов.Все было бы так, если бы substr и instr для varchar2 не работали бы в разы быстрее, чем их аналоги для лобов.Зачем с raw работать lob-функциями?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263624
Egoр,

подправил скрипт SQLLOADER.
Работает.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
load data
infile 'TEXT_AND_B'
into table IMP truncate
when (1:2) = 'TE'
(
  ROWNUMBER     recnum
, TEXT   position (1)   raw(1000000)
)
into table xy truncate
when (1:2) = 'BI'
(
  ROWNUMBER    recnum
, BINARIES    position (1)  raw(1000000)
)


Есть ли у кого пример решения задачи без SQLLOADER? Например с dbms_lob.
Был бы очень благодарен.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263665
Фотография Egoр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ElicЗачем с raw работать lob-функциями?Когда речь идет про crlf, то это уже не совсем raw. А раз не совсем raw, то уже можно предполагать разное.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263678
EgoрElicЗачем с raw работать lob-функциями?Когда речь идет про crlf, то это уже не совсем raw. А раз не совсем raw, то уже можно предполагать разное.чудак, как ты из блоба получишь varchar2? и что ты будешь делать, если блоб, который якобы текст, в кодировке utf8?
автор не в состоянии грамотно поставить задачу, допускаю обсуждать между собой гипотетические преимущества вариантов каких-то своих частных задач. но нужно сформулировать задачу полноценно, привести шаги решения полностью.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263767
может в консерватории...,

задачу поставил с примером и решением. Плохому танцору...
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263830
может в консерватории...,

попробую еще раз сформулировать:
Имеется таблица:
create table IMP
(

ROWNUMBER NUMBER(38), --число строки содержимого файла, записанного в таблицу
TEXT CLOB, текстовое содержимое файла
BINARIES BLOB --бинарное содержимое файла

);

содержимое бинарного файла нужно записывать в таблицу построчно. Строчку создавать с помощью логики
1. С позиции Nr 1 файла до CTRL
2. C CTRL предыдущий строчки до следующего ctrl

Если две первые позиции строки 'TE', тогда строчка пишется в поле TEXT с соответствующим номером строки.
Если же две первые позиции строки BI, тогда строчка записывается в поле BINARIES с соответствующим номером строки.

Получаем в таблице 5 строк.

Следующие строки записываются в поле TEXT
TE121311718273827381
TE121311718273827321
TE121311718273827344
Следующие строки записываются в поле BINARIES
BI000000000ºWoµÚ>þ¢
BI000000000ºWoµÚ>þ¢

Вот решение с помощью SQLLOADER:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
load data
infile 'TEXT_AND_B'
into table IMP truncate
when (1:2) = 'TE'
(
  ROWNUMBER     recnum
, TEXT   position (1)   raw(1000000)
)
into table xy truncate
when (1:2) = 'BI'
(
  ROWNUMBER    recnum
, BINARIES    position (1)  raw(1000000)
)



Хотел бы решить задание с помощью Oracle Package (например dbms_lob).
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39263840
опечатка
Код: plaintext
1.
2.
содержимое бинарного файла нужно записывать в таблицу построчно. Строчку создавать с помощью логики
1. С позиции Nr 1 файла до CTRL
2. C CTRL предыдущий строчки до следующего ctrl

CTRL ---> CRLF
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39264894
Hans Christian Andersen,

есть у кого-нибудь идеи?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39264962
dmdmdm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Были бы идеи - написали бы.
А так - вы не можете определиться, чем загружать - SQLLoader или UTL_FILE. Не приводите примеры кода.
Ждете, чтоб за вас всю задачу решили?
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39264973
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не очень понятно, какие идеи нужны. Берешь PL/SQL Developer и пишешь код.
...
Рейтинг: 0 / 0
Фаил записать в базу/таблицу с полями СLOB и BLOB
    #39266086
NLS-er
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hans Christian Andersenстроки записываются в поле BINARIES
В BLOB записываются байты, а строки состоят из символов.
Разницу между байтами и символами читай в Concepts & Globalization Support Guide
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Фаил записать в базу/таблицу с полями СLOB и BLOB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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