Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Пн Сен 14, 2015 14:36  Получение LONG RAW через DB Link |
|
Полезность: Нет оценки
|
Добрый день!
Требуется перенести данные из удаленной БД через линк, проблема в поле с типом LONG RAW.
И как ни крути, считать эти данные в таблицу/переменную не получается, всегда ошибки:
ORA-00997: неверное использование типа данных LONG
ORA-01406: выбранное значение столбца усекается
А использование to_lob, по понятным причинам, приводит к ошибке ORA-22992: невозможно использовать указатели LOB, выбранные из удаленных таблиц.
Есть какие-нибудь идеи?
P/S Делать что-либо в удаленной БД нельзя, только чтение. |
|
 |
prog Эксперт
Вступление в Клуб: 03.03.2008
|
Пн Сен 14, 2015 14:57   |
|
Полезность: Нет оценки
|
select long_data from table1@link into table2 |
|
 |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Пн Сен 14, 2015 15:05   |
|
Полезность: Нет оценки
|
prog пишет: | select long_data from table1@link into table2 |
Независимо от того, что тут подразумевалось под table2 - таблица бд/ассоциативный массив/переменная - не получается:
Для массива - ORA-06502: PL/SQL: : Bulk Bind: Truncated Bind ошибка числа или значения
Для таблицы - ORA-00997: неверное использование типа данных LONG
Для переменной - ORA-01406: выбранное значение столбца усекается |
|
 |
Random Эксперт
Вступление в Клуб: 27.06.2011
|
Пн Сен 14, 2015 15:22  Re: Получение LONG RAW через DB Link |
|
Полезность: Нет оценки
|
prankster пишет: | P/S Делать что-либо в удаленной БД нельзя, только чтение. |
Разместить там функцию, преобразующую long raw к списку строк varchar2 можно?
Желательно функцию сделать pipeline. |
|
 |
alx Участник - экстремал
Вступление в Клуб: 29.06.2007
|
Пн Сен 14, 2015 15:26   |
|
Полезность: Нет оценки
|
заметили, что insert поля с типом long не проходит через дб-линк, но update проходит без ошибки. |
|
 |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Пн Сен 14, 2015 15:39  Re: Получение LONG RAW через DB Link |
|
Полезность: Нет оценки
|
Random пишет: | prankster пишет: | P/S Делать что-либо в удаленной БД нельзя, только чтение. |
Разместить там функцию, преобразующую long raw к списку строк varchar2 можно?
Желательно функцию сделать pipeline. |
Очень нежелательно, но придется, если ничего не придумаю.. Тоже думал на крайний такое решение с pipelined.
alx пишет: | заметили, что insert поля с типом long не проходит через дб-линк, но update проходит без ошибки. |
Пробую update, но получаю все ту же ORA-00997: неверное использование типа данных LONG.
Вы как делали? Обычный update: Код: | update table1 t set t.c_long_data = (select c_long_raw from table2@dblink x where x.id = :b1) where t.id = :b2 | ? |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Пн Сен 14, 2015 15:41   |
|
Полезность: Нет оценки
|
Bulk insert должен сработать.
Код: | insert into local_table select * from remote_table@link |
|
|
 |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Пн Сен 14, 2015 15:45   |
|
Полезность: Нет оценки
|
maestro пишет: | Bulk insert должен сработать.
Код: | insert into local_table select * from remote_table@link |
|
Не, Серег, не работает - ORA-00997  |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Пн Сен 14, 2015 16:02   |
|
Полезность: Нет оценки
|
prankster пишет: | maestro пишет: | Bulk insert должен сработать.
Код: | insert into local_table select * from remote_table@link |
|
Не, Серег, не работает - ORA-00997  |
А если преобразовать в BLOB, а затем bulk insert.
Попробуй
Код: | insert into local_table_with_blob select to_lob(long_raw_field) from remote_table@link | [/quote] |
|
 |
vtar Эксперт
Вступление в Клуб: 20.03.2009
|
|
 |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Пн Сен 14, 2015 16:27   |
|
Полезность: Нет оценки
|
maestro пишет: | prankster пишет: | maestro пишет: | Bulk insert должен сработать.
Код: | insert into local_table select * from remote_table@link |
|
Не, Серег, не работает - ORA-00997  |
А если преобразовать в BLOB, а затем bulk insert.
Попробуй
Код: | insert into local_table_with_blob select to_lob(long_raw_field) from remote_table@link |
| [/quote]
Та же ошибка.. Самое забавное, что обычный селект в pl/sql developer показывает данные в raw-столбце, а пихнуть его куда-либо никак |
|
 |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Пн Сен 14, 2015 16:38   |
|
Полезность: Нет оценки
|
Даже дядька Том не знает как?
Судя по всему, без доработок в удаленной БД не обойтись  |
|
 |
maestro Профи
Вступление в Клуб: 12.10.2010
|
Пн Сен 14, 2015 16:47   |
|
Полезность: Нет оценки
|
prankster пишет: |
Та же ошибка.. Самое забавное, что обычный селект в pl/sql developer показывает данные в raw-столбце, а пихнуть его куда-либо никак |
Тогда Джава тебе в помощь  |
|
 |
prankster Профи
Вступление в Клуб: 22.08.2014
|
Пн Сен 14, 2015 17:04   |
|
Полезность: Нет оценки
|
maestro пишет: | prankster пишет: |
Та же ошибка.. Самое забавное, что обычный селект в pl/sql developer показывает данные в raw-столбце, а пихнуть его куда-либо никак |
Тогда Джава тебе в помощь  |
Ага, этим и занялся, может что и получится. Главное чтобы не проседало на больших объемах, а то там заморочь с коннектами какая-то |
|
 |
alx Участник - экстремал
Вступление в Клуб: 29.06.2007
|
Пн Сен 14, 2015 18:53  Re: Получение LONG RAW через DB Link |
|
Полезность: Нет оценки
|
Цитата: | alx пишет: | заметили, что insert поля с типом long не проходит через дб-линк, но update проходит без ошибки. |
Пробую update, но получаю все ту же ORA-00997: неверное использование типа данных LONG.
Вы как делали? Обычный update: Код: | update table1 t set t.c_long_data = (select c_long_raw from table2@dblink x where x.id = :b1) where t.id = :b2 | ? |
ошибочка вышла, сорри, там был тип CLOB, не LONG |
|
 |
|