В попытке попытаться помочь нам, возможно, понадобятся некоторые разъяснения. Возможно, решив проблему, вы можете сообщить нам, если это то, что вы спрашиваете:
Как можно импортировать существующий 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 в существующие таблицы.