| Предыдущая тема :: Следующая тема   | 
	
	
	
		| Автор | 
		Сообщение | 
	
	
		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 | 
			 
		  | 
	
	
		  | 
	
	
		 |