powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Фаил записать в базу/таблицу с полями СLOB и BLOB
25 сообщений из 39, страница 1 из 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
25 сообщений из 39, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Фаил записать в базу/таблицу с полями СLOB и BLOB
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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