如何在Sql Server 2005中将带有属性的XML数据加载到数据库

时间:2011-10-05 13:02:31

标签: asp.net xml sql-server-2005 sql-server-2008 ssis

我试图从下面给出的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但是徒劳无法读取属性。

任何帮助表示赞赏!!

谢谢!

1 个答案:

答案 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