Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Фаил записать в базу/таблицу с полями СLOB и BLOB / 25 сообщений из 39, страница 1 из 2
24.06.2016, 15:41:30
    #39261903
Фаил записать в базу/таблицу с полями СLOB и BLOB
Имеется таблица
Код: 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
24.06.2016, 15:51:27
    #39261912
dmdmdm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фаил записать в базу/таблицу с полями СLOB и BLOB
Требование "построчно" непонятно.
Требование "построчно" применительно к бинарнику нарушит бинарник.
А так - SQL loader на здоровье.
...
Рейтинг: 0 / 0
24.06.2016, 15:59:05
    #39261923
Фаил записать в базу/таблицу с полями СLOB и BLOB
dmdmdm,

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

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

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

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

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

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

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

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

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

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

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

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

Можете привести пример на разбитие файла по crlf?
...
Рейтинг: 0 / 0
28.06.2016, 11:10:06
    #39263521
Egoр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Фаил записать в базу/таблицу с полями СLOB и BLOB
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
28.06.2016, 11:23:26
    #39263540
Фаил записать в базу/таблицу с полями СLOB и BLOB
Egoр,

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

Тогда свой разборщик напишите, это, имхо, не сложно.
Обратите внимание, если вас внутри строки, начинающейся с BI, может встретиться CRLF,
то нужно как-то отличать окончание BI-строки от содержимого BI-строки?
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Фаил записать в базу/таблицу с полями СLOB и BLOB / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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