博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将xml中的数据导入到数据库
阅读量:4170 次
发布时间:2019-05-26

本文共 2789 字,大约阅读时间需要 9 分钟。

最简单的读取,把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); }; } }

转载地址:http://iudai.baihongyu.com/

你可能感兴趣的文章
贝壳找房机试题(笔试题)
查看>>
Xerces的下载,编译和在VS 2019中的配置
查看>>
国内快速访问GitHub的方法,亲测有用
查看>>
键盘fn键常亮(一直亮),解决办法
查看>>
Xerces C++实现xml文件解析
查看>>
用户强制一台设备登录,其他设备登出
查看>>
spring实现单例及创建线程安全单例
查看>>
设计模式-- 模板方法模式
查看>>
SQL关键字执行顺序
查看>>
设计模式--适配器模式
查看>>
SpringMvc注解之@ControllerAdvice
查看>>
SQL--查询两个字段相同的记录
查看>>
多研究些架构,少谈些框架(1) -- 论微服务架构的核心概念
查看>>
多研究些架构,少谈些框架(2)-- 微服务和充血模型
查看>>
多研究些架构,少谈些框架(3)-- 微服务和事件驱动
查看>>
SQL性能优化梳理
查看>>
微服务架构技术栈
查看>>
想面试进BAT,不得不看的分布式锁,面试题都在这里了!!
查看>>
Redis最常被问到知识点总结
查看>>
这才是微服务拆分的正确姿势,值得学习!
查看>>