【问题标题】:insert each xml node to sql server 2008 table将每个 xml 节点插入到 sql server 2008 表中
【发布时间】:2019-05-09 00:24:47
【问题描述】:

我的 xml 如下所示:

<Production>
  <AIS_ID>ais150Dz</AIS_ID>
  <WorkedOn>12-12-2017</WorkedOn>
  <Status>Completed</Status>
</Production>

我想将它插入到如下所示的表格中

ID   Field_Ident   Value_Ident
1     AIS_ID        ais150Dz
2     WorkedOn      12-12-2017
3     Status        Completed

我找到了这样做的建议,但我必须在插入数据时手动声明列名,例如“/生产/AIS_ID”。我想让它动态化,不管 XML 中有多少节点。原因是,返回的xml不固定。

请有任何建议。

【问题讨论】:

  • 为什么要这样做? SQL Server 有一个xml 类型。
  • 我得到了字典形式的数据。要在数据库中插入所有值,我必须在 C# 中使用 for 循环。为避免这种情况,我已将字典转换为 xml 字符串,并将其传递给存储过程。现在我想插入每个节点及其值,如问题所示。
  • 您可以在 VS 项目中使用创建数据上下文,然后您可以获取数据表并保存到数据库中。 datacontext 自动创建 c# 类和 SQL 表之间的类和映射接口。

标签: c# sql-server xml tsql


【解决方案1】:

试试这个:

DECLARE @XML XML;

SET @XML = '<Production>
  <AIS_ID>ais150Dz</AIS_ID>
  <WorkedOn>12-12-2017</WorkedOn>
  <Status>Completed</Status>
</Production>'

SELECT  T.c.value('local-name(.)', 'VARCHAR(50)')
       ,T.c.value('(./node())[1]', 'VARCHAR(100)')
FROM @XML.nodes('Production/*')T(c);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多