Как мне преодолеть ограничение OpenXML в 8000 символов?
-
06-09-2019 - |
Вопрос
Я загружаю XML в SQL с помощью OpenXML при объявлении переменной максимальное значение, которое я могу увеличить, составляет 8000 символов :
DECLARE @xml_text varchar(8000)
Поскольку text, ntext запрещено использовать с OpenXML, какие еще альтернативы у меня есть для загрузки всего XML (более 20000 символов) в SQL?
Решение
Вы должны иметь возможность использовать varchar(max) (SQL 2005 и выше)
DECLARE @idoc int
DECLARE @doc varchar(max)
SET @doc = '
<myxml>
<node nodeid="1" nodevalue="value 1">
</node>
</myxml>'
EXEC sp_xml_preparedocument @idoc OUTPUT, @doc
SELECT
*
FROM
OPENXML (@idoc, '/myxml/node',1) WITH ( nodeid varchar(10), nodevalue varchar(20) )
Другие советы
Если вы используете SQL 2005 или лучше, вы могли бы использовать сам тип данных XML.Таким образом, вы смогли бы избежать использования OPENXML:
DECLARE @XDoc XML
SET @XDoc = '<Customer>
<FirstName>Fred</FirstName>
<LastName>Flinstone</LastName>
</Customer>
<Customer>
<FirstName>Barney</FirstName>
<LastName>Rubble</LastName>
</Customer>'
SELECT
Tbl.Col.value('FirstName[1]', 'VARCHAR(MAX)'),
Tbl.Col.value('LastName[1]', 'VARCHAR(MAX)')
FROM @XDoc.nodes('/Customer') Tbl(Col)
Не связан с StackOverflow