Каков наилучший способ сохранить данные XML в SQL Server? - PullRequest
9 голосов
/ 01 апреля 2009

Есть ли прямой маршрут, который довольно прямой? (т. е. может ли SQL Server читать XML)

Или лучше проанализировать XML и просто передать его обычным способом через ADO.Net в виде отдельных строк или, возможно, пакетного обновления?

Я понимаю, что могут быть решения, которые включают в себя большие сложные хранимые процессы - хотя я не совсем против этого, я предпочитаю иметь большую часть своей бизнес-логики в коде C #. Я видел решение, использующее SQLXMLBulkLoad, но, похоже, он требует довольно сложного кода SQL.

Для справки, я буду работать с около 100 строками одновременно, с около 50 небольшими частями данных для каждой (строки и целые числа). Это в конечном итоге станет ежедневной пакетной работой.

Будем очень благодарны за любые фрагменты кода, которые вы можете предоставить.

Ответы [ 5 ]

11 голосов
/ 01 апреля 2009

SQL Server 2005 и более поздние версии имеют тип данных «XML», который можно хранить в формате XML без указания типа или с помощью схемы XSD.

Вы можете в основном заполнять столбцы типа XML из литеральной строки XML, поэтому вы можете просто использовать обычный оператор INSERT и заполнить содержимое XML в это поле.

Марк

4 голосов
/ 01 апреля 2009

Вы можете использовать функцию OPENXML и хранимую процедуру sp_xml_preparedocument для простого преобразования вашего XML в наборы строк.

2 голосов
/ 01 апреля 2009

Да, SQL Server 2005 и выше может анализировать XML "из коробки".

Вы используете узлы, значения и методы запросов, чтобы разбить его так, как вы хотите: значения или атрибуты

Некоторые бесстыдные засорения:

2 голосов
/ 01 апреля 2009

Если вы используете SQL Server 2008 (или 2005), он имеет xml собственный тип данных. Вы можете связать схему XSD с переменными xml и вставить непосредственно в столбцы типа xml.

0 голосов
/ 25 августа 2015

Данные XML и документ XML могут иметь различное значение. Когда тип xml подходит для данных, он не сохраняет форматирование (удаляются пробелы), поэтому в некоторых случаях (например, файлы конфигурации) лучшим вариантом будет nvarchar.

...