Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Опять LONG RAW -> BLOB / 25 сообщений из 27, страница 1 из 2
15.10.2007, 15:47
    #34869389
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Подскажите, плиз, запуталась окончательно.
Нужно перекинуть данные LONG RAW(картинки) на удаленном сервере, более 32 КБайт, в поле BLOB другой БД. Распределенный запрос использовать не могу, ограничения LONG. На удаленном сервере делать ничего не могу, в т.ч. экспорт - ограничения доступа. Как быть? Изменить тип данных в исходной таблице соответственно тоже не могу. Как быть?
...
Рейтинг: 0 / 0
15.10.2007, 15:56
    #34869437
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
В догонку. На форуме нашла прогу /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
15.10.2007, 15:57
    #34869440
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
STFF memo -> LOB or VARCHAR
...
Рейтинг: 0 / 0
15.10.2007, 16:02
    #34869471
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
В догонку. На форуме нашла прогу /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
15.10.2007, 16:10
    #34869506
orawish
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
fox_studentПодскажите, плиз, запуталась окончательно.
Нужно перекинуть данные LONG RAW(картинки) на удаленном сервере, более 32 КБайт, в поле BLOB другой БД. Распределенный запрос использовать не могу, ограничения LONG. На удаленном сервере делать ничего не могу, в т.ч. экспорт - ограничения доступа. Как быть? Изменить тип данных в исходной таблице соответственно тоже не могу. Как быть?
С голимым лонгрвом надо завязывать. Как вариант - грубо требуйте от тех, кто живет за
дблинком, создать аналогичный, по содержанию, лоб.
...
Рейтинг: 0 / 0
15.10.2007, 16:14
    #34869524
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Elic, спасибо, оперативно. Можно поподробней, что такое CTAS + to_lob? Оба сервера Oracle 8.1.7...
...
Рейтинг: 0 / 0
15.10.2007, 16:41
    #34869638
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Попробовала через команду Copy(sqlplus). Ограничение на данные long - 80. Итого в новосозданной таблице в поле LONG RAW вместо 9142Б всего 39Б. Можно ли увеличить длину копируемых данных? В источнике картинки до 500МБайт попадаются...

точно надо ГРУБО ТРЕБОВАТЬ...
...
Рейтинг: 0 / 0
15.10.2007, 16:52
    #34869682
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
fox_studentПопробовала через команду Copy(sqlplus). Ограничение на данные long - 80.RTFM SQL*Plus COPY Command (FAQ)
...
Рейтинг: 0 / 0
15.10.2007, 17:17
    #34869767
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Спасибо, вижу что можно переменную LONG увеличить до 2 Гигабайтов. На что это может еще повлиять (сервер-то рабочий)?
...
Рейтинг: 0 / 0
15.10.2007, 17:44
    #34869864
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Караул!
Увеличила размер переменной 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
15.10.2007, 18:04
    #34869938
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Вывод: через сopy тоже не идет. Да если б и получилось, то что дальше делать? to_lob/to_blob 8.1.7 не понимает. Опять же по кусочкам тип LONG RAW читать не получается.
что такое CTAS + to_lob?
...
Рейтинг: 0 / 0
15.10.2007, 18:18
    #34869978
pravednik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
fox_studentВывод: через сopy тоже не идет. Да если б и получилось, то что дальше делать? to_lob/to_blob 8.1.7 не понимает. Опять же по кусочкам тип LONG RAW читать не получается.
что такое CTAS + to_lob?

все оно понимает....вы просто в доку не мсмотрите
...
Рейтинг: 0 / 0
15.10.2007, 18:33
    #34870019
pravednik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
и тут еще чуток есть
...
Рейтинг: 0 / 0
15.10.2007, 18:43
    #34870045
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Спасибо-спасибо! Перекинуть из LONG RAW в BLOB в пределах одной базы, через to_lob получилось, в т.ч. данные > 32K. Как бы теперь все данные LONG RAW забрать на локальную базу, через copy?
...
Рейтинг: 0 / 0
15.10.2007, 18:51
    #34870068
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
fox_studentНа удаленном сервере делать ничего не могу, в т.ч. экспорт - ограничения доступа. Как быть?Кстати, какие проблемы запустить экспорт "местно"? Это практически то же, что и copy, только лучше.
...
Рейтинг: 0 / 0
15.10.2007, 19:00
    #34870091
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Здесь все просто...
EXP-00009:
no privilege to export REMOTE_SERV's table T_FOTO
...
Рейтинг: 0 / 0
15.10.2007, 19:06
    #34870106
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Всем спасибо, на сегодня у меня все. Завтра еще посмотрю set long...
...
Рейтинг: 0 / 0
15.10.2007, 19:07
    #34870107
pravednik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
так не получается ??
Код: 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
15.10.2007, 19:09
    #34870112
pravednik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
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
16.10.2007, 10:19
    #34870722
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Делаю
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
17.10.2007, 10:58
    #34873988
fox_student
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Кто-нить подскажет, как побороть
ORA-01461: can bind a LONG value only for insert into a LONG column
при копировании базы через sqlplus / copy?
...
Рейтинг: 0 / 0
12.08.2008, 10:32
    #35482466
Sergey Molchanov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Хоть вопрос годичной давности, но присоединюсь к нему.
Аналогичная ситуация: нужно вытащить в свою таблицу из удаленной базы поле 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
12.08.2008, 10:46
    #35482493
Sergey Molchanov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
Вдогонку:
Если задать set long 4000 или меньше - все хорошо без ошибок, если не считать за недостаток обрезанные значения полей. :(
Есла же задать set long 4001 или больше - выскакивает вышеупомянутая ошибка ORA-01461
...
Рейтинг: 0 / 0
27.08.2008, 23:17
    #35509800
Uchitel
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
У меня похожая задача. В PL/SQL-ной процедуре мне надо прочесть и по кусочкам обработать колонку типа LONG RAW. Длина там больше 32К. Как это можно сделать?
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
14.01.2021, 18:31
    #40035909
DEBugger13
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Опять LONG RAW -> BLOB
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
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Опять LONG RAW -> BLOB / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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