我试图从下面给出的XML中读取相关列的数据并加载到数据库中。
我的XML如下所示:
<questions>
<question>
<Field name="id">12</Field>
<Field name="lid">10</Field>
<Field name="text">Hello</Field>
</question>
</questions>
我有列id,lid和text的表,我想将xml上面的数据加载到数据库中。尝试使用OpenXML但是徒劳无法读取属性。
我正在使用以下查询。
DECLARE @doc AS INT
EXEC Sp_xml_preparedocument
@doc OUTPUT,
@queueData
INSERT INTO dbo.Questions
([Id],[Lid],[Text])
SELECT * FROM OPENXML(@doc, '/questions/question/Field', 1)
WITH ( id VARCHAR(20),
lid VARCHAR(20) ,
text VARCHAR(MAX))
我想将xml以上的数据加载到数据库中。尝试使用OpenXML但是徒劳无法读取属性。
任何帮助表示赞赏!!
谢谢!
答案 0 :(得分:1)
试试这个。
declare @xml xml = '
<questions>
<question>
<Field name="id">12</Field>
<Field name="lid">10</Field>
<Field name="text">Hello</Field>
</question>
</questions>
'
select N.value('(Field[@name="id"])[1]', 'varchar(20)'),
N.value('(Field[@name="lid"])[1]', 'varchar(20)'),
N.value('(Field[@name="text"])[1]', 'varchar(max)')
from @xml.nodes('/questions/question') as T(N)
在此处详细了解:http://msdn.microsoft.com/en-us/library/ms190798.aspx