powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Опять LONG RAW -> BLOB
25 сообщений из 27, страница 1 из 2
Опять LONG RAW -> BLOB
    #34869389
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, плиз, запуталась окончательно.
Нужно перекинуть данные LONG RAW(картинки) на удаленном сервере, более 32 КБайт, в поле BLOB другой БД. Распределенный запрос использовать не могу, ограничения LONG. На удаленном сервере делать ничего не могу, в т.ч. экспорт - ограничения доступа. Как быть? Изменить тип данных в исходной таблице соответственно тоже не могу. Как быть?
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869437
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку. На форуме нашла прогу /topic/119831&hl=long+blob+clob

procedure Long2Lob(
-- Uses DBMS_SQL to select a LONG column identified by p_LongQuery, and returns it in p_CLob.
p_LongQuery in varchar2,
p_CLob in out clob)

работает с ДЛИННЫМИ СТРОКАМИ, читает строку по кусочкам через dbms_sql.column_value_long и записывает кусочки в CLOB.
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869440
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
STFF memo -> LOB or VARCHAR
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869471
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку. На форуме нашла прогу /topic/119831&hl=long+blob+clob

procedure Long2Lob(
-- Uses DBMS_SQL to select a LONG column identified by p_LongQuery, and returns it in p_CLob.
p_LongQuery in varchar2,
p_CLob in out clob)

работает через курсор, с ДЛИННЫМИ СТРОКАМИ, читает строку по кусочкам через dbms_sql.column_value_long и записывает кусочки в CLOB. Для моего случая не подходит, column_value_long ругается на тип данных. Можно ли читать как-то кусочками тип LONG RAW?
Пробовала использовать dbms_sql.column_value_raw, при этом описала переменную LONG RAW, в которую читала данные целиком, но картинка более 32000 не влазит. Что еще попробовать?
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869506
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox_studentПодскажите, плиз, запуталась окончательно.
Нужно перекинуть данные LONG RAW(картинки) на удаленном сервере, более 32 КБайт, в поле BLOB другой БД. Распределенный запрос использовать не могу, ограничения LONG. На удаленном сервере делать ничего не могу, в т.ч. экспорт - ограничения доступа. Как быть? Изменить тип данных в исходной таблице соответственно тоже не могу. Как быть?
С голимым лонгрвом надо завязывать. Как вариант - грубо требуйте от тех, кто живет за
дблинком, создать аналогичный, по содержанию, лоб.
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869524
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic, спасибо, оперативно. Можно поподробней, что такое CTAS + to_lob? Оба сервера Oracle 8.1.7...
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869638
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовала через команду Copy(sqlplus). Ограничение на данные long - 80. Итого в новосозданной таблице в поле LONG RAW вместо 9142Б всего 39Б. Можно ли увеличить длину копируемых данных? В источнике картинки до 500МБайт попадаются...

точно надо ГРУБО ТРЕБОВАТЬ...
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869682
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox_studentПопробовала через команду Copy(sqlplus). Ограничение на данные long - 80.RTFM SQL*Plus COPY Command (FAQ)
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869767
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, вижу что можно переменную LONG увеличить до 2 Гигабайтов. На что это может еще повлиять (сервер-то рабочий)?
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869864
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Караул!
Увеличила размер переменной LONG до 10000, теперь sqlplus тип LONG RAW почему-то заменяет на LONG.

SQL> copy from ... to ... create t_foto (id, foto) using (select id, foto from t_foto where id = 1);

Array fetch/bind size is 15. (arraysize is 15)
Will commit when done. (copycommit is 0)
Maximum long size is 10000. (long is 10000)

ERROR:
ORA-01461: can bind a LONG value only for insert into a LONG column
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869938
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вывод: через сopy тоже не идет. Да если б и получилось, то что дальше делать? to_lob/to_blob 8.1.7 не понимает. Опять же по кусочкам тип LONG RAW читать не получается.
что такое CTAS + to_lob?
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34869978
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox_studentВывод: через сopy тоже не идет. Да если б и получилось, то что дальше делать? to_lob/to_blob 8.1.7 не понимает. Опять же по кусочкам тип LONG RAW читать не получается.
что такое CTAS + to_lob?

все оно понимает....вы просто в доку не мсмотрите
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34870019
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и тут еще чуток есть
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34870045
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо-спасибо! Перекинуть из LONG RAW в BLOB в пределах одной базы, через to_lob получилось, в т.ч. данные > 32K. Как бы теперь все данные LONG RAW забрать на локальную базу, через copy?
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34870068
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fox_studentНа удаленном сервере делать ничего не могу, в т.ч. экспорт - ограничения доступа. Как быть?Кстати, какие проблемы запустить экспорт "местно"? Это практически то же, что и copy, только лучше.
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34870091
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь все просто...
EXP-00009:
no privilege to export REMOTE_SERV's table T_FOTO
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34870106
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, на сегодня у меня все. Завтра еще посмотрю set long...
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34870107
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так не получается ??
Код: plaintext
copy from sourc_user/user_pass@xe to target_user/user_pas@xe create  Target_table(x) using select *  from sourc_table

причем
sourc_table (x long raw)
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34870112
Фотография pravednik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pravednik

вeрнее
Код: plaintext
copy from sourc_user/user_pass@sour_DB to target_user/user_pas@targ_DB create Target_table(x) using select *  from sourc_table
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34870722
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю
copy from ... to ... create t_foto (id, foto) using (select id, foto from t_foto where id = 1)
При стандартном значении параметра LONG = 80 копирует, но урезает данные. А при увеличении LONG = 100000 ругается на тип переменной:

Array fetch/bind size is 15. (arraysize is 15)
Will commit when done. (copycommit is 0)
Maximum long size is 100000. (long is 100000)

ERROR:
ORA-01461: can bind a LONG value only for insert into a LONG column

Исходная таблица t_foto имеет тип данных LONG RAW, при вставке с парам. LONG=80 в результирующей таблице тоже тип LONG RAW...
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #34873988
fox_student
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-нить подскажет, как побороть
ORA-01461: can bind a LONG value only for insert into a LONG column
при копировании базы через sqlplus / copy?
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #35482466
Sergey Molchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоть вопрос годичной давности, но присоединюсь к нему.
Аналогичная ситуация: нужно вытащить в свою таблицу из удаленной базы поле LONG RAW.
Пробую командой COPY. Та же ошибка
ORA-01461: can bind a LONG value only for insert into a LONG column

Удаленная база, что прячется за дб_линком - MSSQL через Transparent Gateway

Поэтому:
1. TO_LOB не работает, потому что используется дб_линк
2. Попросить "владельца" исходной базы изменить тип поля - не получится, это прозрачный шлюз видит MSSQL-ный тип image как LONG RAW.

Кстати, текстовый LONG через команду COPY я уже победил :) А вот с двоичным полем пока бока.
Причем какую-то часть записей перед выводом ошибки оно-таки копирует. А именно те записи, длина которых измеряется сотнями-тысячами байт. А вот с пятизначными размерами (реальные данные в MSSQL-ной базе - длина полей в диапазоне от 19456 до 50176 байт) не хочет :(
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #35482493
Sergey Molchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вдогонку:
Если задать set long 4000 или меньше - все хорошо без ошибок, если не считать за недостаток обрезанные значения полей. :(
Есла же задать set long 4001 или больше - выскакивает вышеупомянутая ошибка ORA-01461
...
Рейтинг: 0 / 0
Опять LONG RAW -> BLOB
    #35509800
Uchitel
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня похожая задача. В PL/SQL-ной процедуре мне надо прочесть и по кусочкам обработать колонку типа LONG RAW. Длина там больше 32К. Как это можно сделать?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Опять LONG RAW -> BLOB
    #40035909
DEBugger13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergey Molchanov
Хоть вопрос годичной давности, но присоединюсь к нему.
Аналогичная ситуация: нужно вытащить в свою таблицу из удаленной базы поле LONG RAW.
Пробую командой COPY. Та же ошибка
ORA-01461: can bind a LONG value only for insert into a LONG column

Удаленная база, что прячется за дб_линком - MSSQL через Transparent Gateway

Поэтому:
1. TO_LOB не работает, потому что используется дб_линк
2. Попросить "владельца" исходной базы изменить тип поля - не получится, это прозрачный шлюз видит MSSQL-ный тип image как LONG RAW.

Кстати, текстовый LONG через команду COPY я уже победил :) А вот с двоичным полем пока бока.
Причем какую-то часть записей перед выводом ошибки оно-таки копирует. А именно те записи, длина которых измеряется сотнями-тысячами байт. А вот с пятизначными размерами (реальные данные в MSSQL-ной базе - длина полей в диапазоне от 19456 до 50176 байт) не хочет :(


В Oracle 19c все так же - через dblink из MSSQL через нативный gateway поле видно как LONG RAW.
вопрос к знатокам - зачем так делать?
Неужели нельзя сразу сделать нормальный BLOB ?

Со строками длиной меньше 32к проблем нет, а вот больше - средствами pl/sql никак не вытягиваются.
Причем, если смотреть строку из PL/SQL Developer - данные видны с длиной больше 32к.
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Опять LONG RAW -> BLOB
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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