Как лучше всего сохранить данные XML на SQL Server?
-
22-08-2019 - |
Вопрос
Есть ли прямой маршрут, который довольно прост?(т.е.может ли SQL Server читать XML)
Или лучше проанализировать XML и просто передать его обычным способом через ADO.Net либо в виде отдельных строк, либо в виде пакетного обновления?
Я понимаю, что могут быть решения, включающие большие сложные хранимые процедуры - хотя я не совсем против этого, я предпочитаю иметь большую часть своей бизнес-логики в коде C#.Я видел решение с использованием SQLXMLBulkLoad, но оно, похоже, требовало довольно сложного кода SQL.
Для справки: я буду работать примерно со 100 строками одновременно и примерно по 50 небольшими фрагментами данных для каждой (строки и целые числа).В конечном итоге это станет ежедневной пакетной работой.
Любые фрагменты кода, которые вы можете предоставить, будут очень признательны.
Решение
SQL Server 2005 и более поздние версии имеют тип данных под названием «XML», в котором вы можете хранить XML — нетипизированный или типизированный со схемой XSD.
По сути, вы можете заполнить столбцы типа XML из строки литерала XML, поэтому вы можете легко использовать обычный оператор INSERT и заполнить содержимое XML в это поле.
Марк
Другие советы
Вы можете использовать функцию OPENXML и хранимую процедуру sp_xml_preparedocument, чтобы легко преобразовать XML в наборы строк.
Если вы используете SQL Server 2008 (или 2005), у него есть xml
собственный тип данных.Вы можете связать схему XSD с xml
переменные и вставлять непосредственно в столбцы типа xml
.
Да, SQL Server 2005 и более поздние версии могут анализировать XML «из коробки».
Вы используете узлы, значения и методы запроса, чтобы разбить их так, как вы хотите, будь то значения или атрибуты.
Какая-то бессовестная затычка:
Данные XML и документ XML могут иметь разное значение.Когда тип xml подходит для данных, он не сохраняет форматирование (пробелы удаляются), поэтому в некоторых случаях (например,файлы конфигурации) лучший вариант — nvarchar.