Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Обработка полей типа TEXT, как таблиц???  [new]
Danil
Member

Откуда:
Сообщений: 242
Как обрабатывать на сервере данные из полей типа TEXT? Если объем этих данные превышает 8000 и на много превышает! т.е. генерить динамически склейку переменных varchar(8000) бессмысленно т.к. сама строка превысит 8000! И возможно не ограничиваться XML функциями! Может быть существует возможность использовать другие форматы данных? Необходимо из поля таблицы типа text извлекать данные как из таблицы!
4 фев 03, 15:38    [121583]     Ответить | Цитировать Сообщить модератору
 Re: Обработка полей типа TEXT, как таблиц???  [new]
Glory
Member

Откуда:
Сообщений: 104760
Если уж вы решили обрабатывать BLOB поля именно на серевере, то придется это делать частями, т.е. в цикле читать содержимое поля в переменную.
4 фев 03, 16:46    [121671]     Ответить | Цитировать Сообщить модератору
 Re: Обработка полей типа TEXT, как таблиц???  [new]
vap
Member

Откуда:
Сообщений: 487
см http://sqlxml.org/faqs.aspx?42

DECLARE @xml_he int

DECLARE @xml_0 varchar( 8000 ), @xml_1 varchar( 8000 ),
@xml_2 varchar( 8000 ), @xml_3 varchar( 8000 )

-- Strip the text value into several varchar strings:

SELECT @xml_0 = SUBSTRING( xml_text, ( 0*8000 ) + 1, 8000 ),
@xml_1 = SUBSTRING( xml_text, ( 1*8000 ) + 1, 8000 ),
@xml_2 = SUBSTRING( xml_text, ( 2*8000 ) + 1, 8000 ),
@xml_3 = SUBSTRING( xml_text, ( 3*8000 ) + 1, 8000 )
FROM tbl

-- Use dynamic SQL to build the prepare doc call:

EXEC(
'DECLARE @Handle int
EXEC sp_xml_preparedocument @Handle OUT, '
'' +
@xml_0 + @xml_1 + @xml_2 + @xml_3 + '''
DECLARE he_cur CURSOR FOR SELECT @Handle'

)
OPEN he_cur
FETCH he_cur INTO @xml_he
DEALLOCATE he_cur

IF @xml_he IS NULL
RAISERROR( 'Invalid Handle!', 16, 1 )

-- Now use OPENXML with the handle in @xml_he


EXEC sp_xml_removedocument @xml_he
4 фев 03, 17:46    [121720]     Ответить | Цитировать Сообщить модератору
 Re: Обработка полей типа TEXT, как таблиц???  [new]
Danil
Member

Откуда:
Сообщений: 242
А может быть осуществима такая вариация:
Из текстового поля сохраняем данные в файл на сервера (имя генерим исходя из коннекта), а потом используя XML-ый провайдер работаем с этими данными, а затем после работы выгребаем данные от туда в поле таблицы?
5 фев 03, 07:35    [121995]     Ответить | Цитировать Сообщить модератору
 Re: Обработка полей типа TEXT, как таблиц???  [new]
Danil
Member

Откуда:
Сообщений: 242
Неужели нет идей?
5 фев 03, 11:52    [122231]     Ответить | Цитировать Сообщить модератору
 Re: Обработка полей типа TEXT, как таблиц???  [new]
Glory
Member

Откуда:
Сообщений: 104760
теоритически эжто осуществимо
exec xp_cmdshell 'тут например стандартная утилита textcopy.exe с параметрами на выборку BLOB поля во внешний файл'

exec xp_cmdshell 'тут самописная утилита обработки файла'
exec xp_cmdshell 'тут например стандартная утилита textcopy.exe с параметрами на добавление в BLOB поля внешнего файл'
5 фев 03, 12:16    [122255]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить