繁体   English   中英

从xml文件检索数据并插入数据库表

[英]Retrieve data from xml file and insert into database table

我正在使用c#.net 1.1和SQL Server 2000 ....

我想从xml文件中检索数据并将该数据存储到数据库表中。

XML档案:

<information>
  <data>
    <id="1"></id>
    <name>peter</name>
    <age>25</age>
  </data>
</information>

我的数据库表是

id int,
name varchar(100),
age int

首先-您的XML无效:

<data>
    <id="1"></id>

这不是有效的XML构造-应该是什么?

数据节点上的“ ID”属性? <data id="1">

里面有值的“ ID”元素? <data><id>1</id>

您可以采取多种方式-完全取决于您的情况:

  • 创建一个XML模式,以便可以将该XML反序列化为.NET对象-如果要导入的文件数量很多,则效果最好

  • 如果您使用的是.NET 3.5及更高版本,请使用Linq-to-XML

  • 使用传统的XML文档处理

如果您使用传统的XML文档处理,则在文件较小的情况下(因为它将整个文件加载到内存中),这种方法效果最好。 在这种情况下,您可以执行以下操作:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("yourfilename.xml");

XmlNodeList dataNodes = xmlDoc.SelectNodes("/information/data");

foreach(XmlNode node in dataNodes)
{
    int id = Convert.ToInt32(node.SelectSingleNode("id").InnerText);
    string name = node.SelectSingleNode("name").InnerText;
    int age = Convert.ToInt32(node.SelectSingleNode("age").InnerText);

    // insert into database, e.g. using SqlCommand or whatever
}

至于插入数据库-您可以使用存储过程或SqlCommand的SQL语句-完全由您决定。 掌握了三部分信息(ID,姓名,年龄)后,您就可以使用自己喜欢的任何信息。

警告词还包括:这不包括任何错误检查 如果<data>节点不完整或子节点名称错误,则会崩溃-您还需要提供一些错误检查! (为简单起见,省去了)

对于XML文件对SQL Server服务可见的情况,这可以使用普通的旧T-SQL进行工作,只需对其进行调整即可插入表中。

DECLARE @DOC INT
DECLARE @XML VARCHAR(MAX) 

-- Dump entire file into variable
SET @XML =
( 
    select BulkColumn from openrowset 
        (BULK N'<your filename>'
            , single_clob) as RuleFile
)

-- Prep doc
EXECUTE sp_xml_preparedocument @DOC OUTPUT, @XML

-- Return data
SELECT * 
    FROM OpenXML(@DOC, '<your xpath>', 2) 
    WITH <your table>

-- Clean up
EXECUTE sp_xml_removedocument @DOC

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM