`

将xml中的数据导入到数据库

 
阅读更多
最简单的读取,把xml的一级子元素当做一条记录插入数据库



代码
        static void InputDict()        {            var conn = new Connection(SharedMembers.localConnectString);            XmlReaderSettings settings = new XmlReaderSettings();            settings.IgnoreWhitespace = true;            using (XmlReader reader = XmlReader.Create("简明英汉词典.xml")) {                reader.MoveToContent();                reader.Read();                var i = 0;                while (reader.IsStartElement()) {                    i++;                    var cmd = new Command("INSERT INTO [dict].[dbo].[simplec]([ck])VALUES (@ck)");                    cmd.AddParameter("@ck",System.Data.SqlDbType.Xml,false,reader.ReadOuterXml());                    conn.Execute(cmd);                    Console.WriteLine("插入第{0}行数据",i);                };            }        }



将上一例中插入的数据记录读取出来,经分析后拆分成dc,js保存到另一个表中。



代码
        static void parsedict()        {            using (var connection = new SqlConnection(SharedMembers.localConnectString))            {                using (var cmd = connection.CreateCommand())                {                    cmd.CommandText = "SELECT [ck] FROM [dict].[dbo].[simplec]";                    connection.Open();                    var rdr = cmd.ExecuteReader();                    while (rdr.Read())                    {                        var ck = (string)rdr["ck"];                        var doc = new XmlDocument();                        doc.LoadXml(ck);                        var Navigator = doc.CreateNavigator();                        var dc = Navigator.SelectSingleNode("/CK/DC").Value;                        Navigator.MoveToNext();                        string js = Navigator.SelectSingleNode("/CK/JS").OuterXml;                        using (var connection2 = new SqlConnection(SharedMembers.localConnectString))                        {                            using (var inscmd = connection2.CreateCommand())                            {                                inscmd.CommandType = CommandType.Text;                                inscmd.CommandText = "INSERT INTO [dict].[dbo].[jmyh2]([dc],[js])VALUES(@DC,@JS)";                                var pdc = inscmd.CreateParameter();                                pdc.ParameterName = "@DC";                                pdc.SqlDbType = SqlDbType.NVarChar;                                pdc.Value = dc;                                inscmd.Parameters.Add(pdc);                                var pjs = inscmd.CreateParameter();                                pjs.ParameterName = "@JS";                                pjs.SqlDbType = SqlDbType.Xml ;                                pjs.Value = js;                                inscmd.Parameters.Add(pjs);                                                                connection2.Open();                                inscmd.ExecuteNonQuery();                                Console.WriteLine(dc);                            }                        }                    }                }            }        }



事实上,可以直接的解析xml,再插入到数据库表。这里使用了xpath技术。



代码
        static void InputDict2()         {            var conn = new Connection(SharedMembers.localConnectString);            XmlReaderSettings settings = new XmlReaderSettings();            settings.IgnoreWhitespace = true;            const string dictname = "OxfordCollocations";            using (XmlReader reader = XmlReader.Create(dictname+".xml"))            {                reader.MoveToContent();                reader.Read();                long i = 0;                while (reader.IsStartElement())                {                    var ck = new XmlDocument();                    ck.LoadXml(reader.ReadOuterXml());                    var Navigator = ck.CreateNavigator();                    var dc = Navigator.SelectSingleNode("/CK/DC").Value;                    Navigator.MoveToNext();                    var js = Navigator.SelectSingleNode("/CK/JS").OuterXml;                    i++;                    var cmd = new Command("INSERT INTO dict.dbo."+dictname+"(id, dc,js)VALUES(@id, @dc,@js)");                    cmd.AddParameter("@id", System.Data.SqlDbType.BigInt, false, i);                    cmd.AddParameter("@dc", System.Data.SqlDbType.NVarChar, false, dc);                    cmd.AddParameter("@js", System.Data.SqlDbType.Xml, false, js);                    conn.Execute(cmd);                    if (i % 1000==0) Console.WriteLine("插入第{0:#,##0,000}行数据", i);                };            }        }
分享到:
评论

相关推荐

    XML文件数据导入到数据库中

    SQL Server提供多种方法将XML数据导入到数据库中: 1. **OPENROWSET函数**:这是SQL Server的一个内置函数,可以直接将XML文件作为单个大值(BLOB)读入。例如: ```sql INSERT INTO YourTable (YourColumn) SELECT...

    xml中的数据导入数据库

    在IT领域,将XML数据导入数据库是一项常见的任务,尤其是在需要整合来自不同来源的数据时。本篇文章将深入探讨如何将XML数据导入到数据库,尤其是Oracle数据库。 首先,理解XML的基本结构至关重要。XML文档由元素、...

    java读取xml文件导入到mysql数据库中

    xml文件导入到mysql数据库中,包括文件:ConnectionUtils.java,InsertDT.java,db_mysql.properties,test01.xml,需要的jar包dom4j-1.6.1.jar,mysql-connection-java-3.1.1.3-bin.jar,jaxen-1.1-beta-7.jar

    kettle动态解析XML文件数据导入Oracle或者其他数据库

    kettle动态解析XML文件数据导入Oracle或者其他数据库 需求背景: 因为客户每天都要通过接口通过ftp上传固定格式的xml的文件,需要每天定时解析指定目录下的指定名称的xml文件导入Oracle和其他的数据库,所以开发了这...

    XML数据提取并导入数据库

    ### XML数据提取并导入MySQL数据库知识点 #### 一、任务概述 本任务旨在从XML文件中提取...通过以上步骤,可以有效地从XML文件中提取数据并导入到MySQL数据库中,同时避免重复记录的插入,确保数据的一致性和完整性。

    xml与数据库中数据的导入导出

    以上就是关于“XML与数据库中数据的导入导出”的核心知识点,实际应用中,开发者需要根据具体需求选择合适的方法和技术,确保数据的准确性和一致性。这个项目虽然只实现了特定数据库的操作,但其基本原理和流程对于...

    java解析xml并导入数据库(dom4j).doc

    为了将 XML 文件中的数据导入到数据库中,需要建立数据库连接。我们使用了 DbUtil 类来获取数据库连接,并使用 PreparedStatement 来执行 SQL 语句。 三、数据导入 在本例中,我们使用了批量导入的方式,将 XML ...

    vb批量将excel数据导入access以及批量将access数据库中的数据导入excel源代码

    标题提到的“vb批量将excel数据导入access以及批量将access数据库中的数据导入excel源代码”是解决这类问题的一种有效方案。下面将详细介绍这两个过程的关键知识点。 1. Excel数据导入Access: - **数据连接**:...

    把Excel表中数据导入数据库.docx

    这种方法可以使用Excel的 built-in功能来生成XML文件,然后使用数据库的导入功能来将XML文件导入到数据库中。 将数据导入数据库 在将数据导入数据库之前,我们需要创建一个数据库表来存储数据。在本示例中,我们...

    使用oracle存储过程将xml文件数据导入数据库

    在Oracle数据库管理中,有时我们需要将XML文件中的数据有效地导入到数据库中,这可以通过使用存储过程来实现。本文将详细讲解如何使用Oracle存储过程完成这一任务,并提供源代码和相关截图辅助理解。 首先,理解XML...

    dom4j将xml文件导入到数据库所需要的包

    通过解析XML,使用XPath查询,映射到数据库表结构,以及处理事务和异常,我们可以构建出高效且可靠的XML数据导入系统。在实际项目中,结合具体的数据库操作框架(如JDBC或ORM框架,如Hibernate),DOM4J可以发挥更大...

    C#读取XML文件并写入数据库

    - `XDocument` 和 `XmlDocument` 都提供了一种将整个XML文档加载到内存中的方式,然后可以方便地通过LINQ查询语法操作XML数据。适合较小的XML文件。 - `XDocument` 更为推荐,因为它提供了更简洁的API,而 `Xml...

    Java实现XML导入不同数据库,从数据库导出数据到XML

    本篇文章将详细讲解如何利用Java技术,特别是JDOM库,来实现在不同数据库间XML数据的导入与导出,并结合Ajax技术进行前端交互。 首先,我们来了解XML(Extensible Markup Language)的基础知识。XML是一种用于存储...

    C#将数据导入excel和Excel数据导入数据库

    本主题聚焦于如何利用C#处理Excel文件,并将其数据导入到SQL Server数据库中。这一过程通常涉及到两个主要步骤:读取Excel数据和与数据库进行交互。 首先,我们来看C#读取Excel数据的部分。在.NET框架中,可以使用...

    使用java解析XML文件,解析完之后将解析结果导入mysql数据库中

    可以考虑使用SAX或者StAX解析器,它们是事件驱动的,只在需要时处理XML数据,减少内存占用。 5. **安全性**: - 防止SQL注入:使用预编译的`PreparedStatement`可以避免SQL注入攻击,确保参数安全。 - 输入验证:...

    c#将xml导入到access数据库

    下面是一个完整的示例代码,整合了以上步骤,用于将XML数据导入到Access数据库中。 ```csharp using System; using System.Xml; using System.Data.OleDb; namespace ImportXMLToAccess { class Program { ...

Global site tag (gtag.js) - Google Analytics