Проблема с SQLXML - SQLXMLBulkLoad

Ralf Lehman
Дата: 10.10.2003 11:29:46
Коллеги подскажите

Как правильно написать схему документа чтобы записать в поле таблицы кусок xml с помощью SQLXMLBulkLoad:

Предположим что XML документ такой:

<exemple>
<table>
<item par1="1" par2="2"/>
<item par1="4" par2="3"/>
</table>
</exemple>

надо написать схему с указанием записать в бд следующий кусок целиком:
<table>
<item par1="1" par2="2"/>
<item par1="4" par2="3"/>
</table>

в таблицу texttable и в поле xmldoc с типом text.

Возможно ли такое или есть др. способы реализации этого?
Sclif
Дата: 10.10.2003 16:05:40
К сожалению, я думаю что никак, ... хотя могу и ошибаться.
Это возможно сделать из OPENXML взяв text() у элемента.
Sclif
Дата: 10.10.2003 16:12:01
Примерно так:

DECLARE @iDoc  int

EXEC sp_xml_preparedocument @iDoc OUTPUT, @XMLText

INSERT texttable
SELECT *
FROM OPENXML (@iDoc, 'тут XPath до exemple',2)
WITH (xmldoc text 'text()')
EXEC sp_xml_removedocument @iDoc

@XMLText - входной параметр в процедуру типа tetx или nvarchar, varchar
Ralf Lehman
Дата: 10.10.2003 17:20:49
Да, спасибо за ответ. Я это юзаю для маленьких xml (не более 4 кб). К сожалению это не подходит когда речь заходит о документах большого объема. внутри процедур нельзя использовать text тип в качестве обмена данными. и я не могу сделать insert, ругает. скорее всего эту задачу можно решить внешним приложением которое будет кусками дописывать через ХП в поле типа text используя функцию textwrite.
Sclif
Дата: 10.10.2003 18:04:38
Смотри, вот нашел в хэлпе по компоненту из Framework .NET, пример схемы сгенеренной этим компонентом (он делает из XML схему XSD):
XML:
<?xml version="1.0" ?>

<Root>
Some text
</Root>


XSD:
<?xml version="1.0" encoding="utf-16"?>

<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Root" type="xs:string" />
</xs:schema>


Может поможет.
Sclif
Дата: 10.10.2003 18:08:15
Правда на xs:string тип Bulk load создает поле nvarchar 1000, это ограничивает, в типах XSD другого типа не нашел, чтобы большой текст содержал...
Ralf Lehman
Дата: 10.10.2003 19:01:39
Вот в это и я уперся. Куда не сунься везде ограничение. А мне надо чтоб не задумываясь заливать длинные документы.
Большое спсб что отозвался Sclif. Буду дальше пытать как нить.