Лучший способ переноса xml на SQL Server?

Я слышал блог подкаста какое-то время, надеюсь, что я этого не сломаю. Вопрос в следующем: мне нужно вставить xml в базу данных. Это будет для уже определенных таблиц и полей. Итак, каков наилучший способ добиться этого? Пока я склоняюсь к программному. Я видел параметры varios, один – объекты передачи данных (DTO), в SQL Server есть файл sp_xml_preparedocument, который используется для передачи XML-данных объекту и сквозному коду.

Я использую CSharp и SQL Server 2005. Поля не являются полями XML, они являются обычными типами данных SQL.

В попытке попытаться помочь нам может потребоваться некоторое разъяснение. Возможно, повторив проблему, вы можете сообщить нам, если это то, о чем вы спрашиваете:

Как импортировать существующий xml в базу данных SQL 2005, не полагаясь на встроенный xml-тип?

Довольно прямое решение, которое вы уже упоминали, это sp_xml_preparedocument , в сочетании с openxml .

Надеемся, что следующий пример иллюстрирует правильное использование. Для более полного примера ознакомьтесь с документами MSDN по использованию OPENXML .

declare @XmlDocumentHandle int declare @XmlDocument nvarchar(1000) set @XmlDocument = N'<ROOT> <Customer> <FirstName>Will</FirstName> <LastName>Smith</LastName> </Customer> </ROOT>' -- Create temp table to insert data into create table #Customer ( FirstName varchar(20), LastName varchar(20) ) -- Create an internal representation of the XML document. exec sp_xml_preparedocument @XmlDocumentHandle output, @XmlDocument -- Insert using openxml allows us to read the structure insert into #Customer select FirstName = XmlFirstName, LastName = XmlLastName from openxml ( @XmlDocumentHandle, '/ROOT/Customer',2 ) with ( XmlFirstName varchar(20) 'FirstName', XmlLastName varchar(20) 'LastName' ) where ( XmlFirstName = 'Will' and XmlLastName = 'Smith' ) -- Cleanup xml document exec sp_xml_removedocument @XmlDocumentHandle -- Show the data select * from #Customer -- Drop tmp table drop table #Customer 

Если у вас есть xml-файл и вы используете C #, то определение хранимой процедуры, которая делает что-то подобное выше, а затем передать содержимое всего xml-файла в хранимую процедуру в виде строки, должно дать вам довольно простой способ импорта xml в ваш существующие таблицы (таблицы).

Если ваш XML соответствует определенной схеме XSD, вы можете изучить инструмент командной строки «xsd.exe» для создания классов объектов C #, к которым вы можете привязать XML, а затем сформировать свои инструкции вставки, используя свойства этих объектов: MSDN XSD Doc

Прослушайте этот документ, и он предоставит вам следующие варианты:

MSDN: параметры XML в Microsoft SQL Server 2005

Вы можете использовать XSLT для переноса XML в SQL-запросы … т.е.

 <xml type="user"> <data>1</data> <data>2</data> <xml> 

Тогда XSLT будет выглядеть так:

 <xsl:template match="xml"> INSERT INTO <xsl:value-of select="@type" /> (data1, data2) VALUES ( '<xsl:value-of select="data[1]" />', '<xsl:value-of select="data[2]" />'); </xsl:template> 

Утверждение соответствия скорее всего не будет корневым узлом, но, надеюсь, вы получите эту идею. Возможно, вам также понадобится обернуть значение non xsl: из частей в xsl: text, чтобы предотвратить добавление лишних символов в запрос. И вы должны убедиться, что вывод XSLT – это текст. При этом вы можете получить список операторов SQL, которые вы могли бы запустить через БД. или вы можете использовать XSLT для вывода инструкции T-SQL, которую вы могли бы загрузить в качестве хранимой процедуры.

  • Как создать odbcparameter для XML-типа sql-сервера для объекта odbccommand?
  • Преобразование XML в базу данных SQL Server
  • вставить элемент в n-й элемент в xml на сервере Sql
  • Получить список элементов и их значений из нетипизированного фрагмента xml в T-SQL
  • Вставить узлы XML в порядке, определенном структурой XML
  • Запрос Xml из SQL с использованием базы данных Entity Framework First
  • XML-версия 1.1 в SQL Server
  • Oracle FOR XML AUTO
  • Как вставить вывод из xml.nodes () в таблицу?
  • Как извлечь данные из столбца xml в sql 2008
  • Возможно ли установить ограничение внешнего ключа для данных в XML?
  • Давайте будем гением компьютера.