|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Подскажите, плиз, запуталась окончательно. Нужно перекинуть данные LONG RAW(картинки) на удаленном сервере, более 32 КБайт, в поле BLOB другой БД. Распределенный запрос использовать не могу, ограничения LONG. На удаленном сервере делать ничего не могу, в т.ч. экспорт - ограничения доступа. Как быть? Изменить тип данных в исходной таблице соответственно тоже не могу. Как быть? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 15:47 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
В догонку. На форуме нашла прогу /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. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 15:56 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
STFF memo -> LOB or VARCHAR ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 15:57 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
В догонку. На форуме нашла прогу /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 не влазит. Что еще попробовать? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 16:02 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
fox_studentПодскажите, плиз, запуталась окончательно. Нужно перекинуть данные LONG RAW(картинки) на удаленном сервере, более 32 КБайт, в поле BLOB другой БД. Распределенный запрос использовать не могу, ограничения LONG. На удаленном сервере делать ничего не могу, в т.ч. экспорт - ограничения доступа. Как быть? Изменить тип данных в исходной таблице соответственно тоже не могу. Как быть? С голимым лонгрвом надо завязывать. Как вариант - грубо требуйте от тех, кто живет за дблинком, создать аналогичный, по содержанию, лоб. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 16:10 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Elic, спасибо, оперативно. Можно поподробней, что такое CTAS + to_lob? Оба сервера Oracle 8.1.7... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 16:14 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Попробовала через команду Copy(sqlplus). Ограничение на данные long - 80. Итого в новосозданной таблице в поле LONG RAW вместо 9142Б всего 39Б. Можно ли увеличить длину копируемых данных? В источнике картинки до 500МБайт попадаются... точно надо ГРУБО ТРЕБОВАТЬ... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 16:41 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
fox_studentПопробовала через команду Copy(sqlplus). Ограничение на данные long - 80.RTFM SQL*Plus COPY Command (FAQ) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 16:52 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Спасибо, вижу что можно переменную LONG увеличить до 2 Гигабайтов. На что это может еще повлиять (сервер-то рабочий)? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 17:17 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Караул! Увеличила размер переменной 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 17:44 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Вывод: через сopy тоже не идет. Да если б и получилось, то что дальше делать? to_lob/to_blob 8.1.7 не понимает. Опять же по кусочкам тип LONG RAW читать не получается. что такое CTAS + to_lob? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 18:04 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
fox_studentВывод: через сopy тоже не идет. Да если б и получилось, то что дальше делать? to_lob/to_blob 8.1.7 не понимает. Опять же по кусочкам тип LONG RAW читать не получается. что такое CTAS + to_lob? все оно понимает....вы просто в доку не мсмотрите ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 18:18 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
и тут еще чуток есть ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 18:33 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Спасибо-спасибо! Перекинуть из LONG RAW в BLOB в пределах одной базы, через to_lob получилось, в т.ч. данные > 32K. Как бы теперь все данные LONG RAW забрать на локальную базу, через copy? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 18:43 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
fox_studentНа удаленном сервере делать ничего не могу, в т.ч. экспорт - ограничения доступа. Как быть?Кстати, какие проблемы запустить экспорт "местно"? Это практически то же, что и copy, только лучше. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 18:51 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Здесь все просто... EXP-00009: no privilege to export REMOTE_SERV's table T_FOTO ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 19:00 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Всем спасибо, на сегодня у меня все. Завтра еще посмотрю set long... ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 19:06 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
так не получается ?? Код: plaintext
причем sourc_table (x long raw) ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 19:07 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
pravednik вeрнее Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2007, 19:09 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Делаю 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... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.10.2007, 10:19 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Кто-нить подскажет, как побороть ORA-01461: can bind a LONG value only for insert into a LONG column при копировании базы через sqlplus / copy? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.10.2007, 10:58 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Хоть вопрос годичной давности, но присоединюсь к нему. Аналогичная ситуация: нужно вытащить в свою таблицу из удаленной базы поле 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 байт) не хочет :( ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2008, 10:32 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Вдогонку: Если задать set long 4000 или меньше - все хорошо без ошибок, если не считать за недостаток обрезанные значения полей. :( Есла же задать set long 4001 или больше - выскакивает вышеупомянутая ошибка ORA-01461 ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2008, 10:46 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
У меня похожая задача. В PL/SQL-ной процедуре мне надо прочесть и по кусочкам обработать колонку типа LONG RAW. Длина там больше 32К. Как это можно сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2008, 23:17 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
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к. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2021, 18:31 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Можно также использовать PL/SQL для работы с LONG Пример заливки varchar(8000) c MSSQL to CLOB через dblink например: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: 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.
Рекомендую также очень полезную статью по теме: working with long columns ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2021, 20:14 |
|
Опять LONG RAW -> BLOB
|
|||
---|---|---|---|
#18+
Vadim Lejnin Можно также использовать PL/SQL для работы с LONG Пример заливки varchar(8000) c MSSQL to CLOB через dblink например: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9.
Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
Рекомендую также очень полезную статью по теме: working with long columns Спасибо, уже читал и протестировал. Но это работает для символьного LONG, а надо LONG RAW ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2021, 23:25 |
|
|
start [/forum/topic.php?all=1&fid=52&tid=1880523]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
177ms |
get topic data: |
8ms |
get forum data: |
1ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 275ms |
0 / 0 |