本发明专利技术公开了一种将可扩展标记语言XML文件的内容导入数据库的方法和装置。方法包括:采用流方式将XML文件中的XML数据加载到内存中;从内存中的所述XML数据中获取数据并保存到指定数据表中;所述指定数据表的数据存储结构与指定数据库相同;将所述指定数据表中的数据导入所述指定数据库中。该技术方案不仅提升了XML文件在读取时的速度,且具有读取稳定不易崩溃的有益效果,并且在将XML文件中获取到的数据导入到数据库时,先将其保存至与指定数据库的存储结构相同的指定数据表中,从而可以批量提交数据到数据库中,大大缩短了数据库的操作时间,提高了数据的导入效率。
【技术实现步骤摘要】
本专利技术涉及计算机
,特别涉及一种将可扩展标记语言XML文件的内容导 入数据库的方法和装置。
技术介绍
XML(Extensible Markup Language,可扩展标记语言),是 Internet环境中跨平台 的,依赖于内容的技术,是当前处理结构化文档信息的有力工具。扩展标记语言XML是当今 最常用的一种简单的数据存储语言,它可以使用一系列简单的自定义标记描述数据。 在很多场景下,需要将XML文件中的内容导入数据库,例如,在电子招投标领域 中,需要将电子标书中XML格式的工程量清单中存储的数据导入电子开评标系统的数据库 中。现有技术通常对XML中存储的数据逐条执行SQL,或使用Data Adapter -并插入,不 仅速度较慢,且在XML文件较大时会造成系统性能快速下滑,系统不稳定甚至内存溢出。例 如,在电子招投标领域中,工程量清单XML文件过大会造成现场开标时标书导入时间耗时 漫长,达不到理想效果、满足不了高性能要求。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上 述问题的将XML文件的内容导入数据库的方法和装置。 依据本专利技术的一个方面,提供了一种将XML文件的内容导入数据库的方法,包括: 采用流方式将XML文件中的XML数据加载到内存中;从内存中的所述XML数据中获取数据 并保存到指定数据表中;所述指定数据表的数据存储结构与指定数据库相同;将所述指定 数据表中的数据导入所述指定数据库中。 可选地,所述采用流方式将XML文件中的XML数据加载到内存中进一步包括:基于 XPathDocument类派生出执行流方式的方法,由该方法采用流方式将XML文件中的XML数据 加载到内存中。 可选地,所述从内存中的所述XML数据中获取数据并保存到指定数据表中包括: 确定内存中的所述XML数据中的节点集;遍历内存中的所述XML数据,读取所述节点集中的 各个节点,从各个节点中获取数据并保存到所述指定数据表中。 可选地,所述遍历内存中的所述XML数据,读取所述节点集中的各个节点,从各个 节点中获取数据并保存到所述指定数据表中包括:基于XPathNavigator类派生出可获取 当前节点的父节点属性的方法,由该方法遍历所述节点集中的各个节点,获取各个节点的 属性值并保存到所述指定数据表中。 可选地,所述将所述指定数据表中的数据导入所述指定数据库中包括:调用 SqlBulkCopy类将所述指定数据表中的数据导入所述指定数据库中。 可选地,所述调用SqlBulkCopy类将所述指定数据表中的数据导入所述指定数 据库中进一步包括:读取Oracle客户端的配置文件,获取Oracle. DataAccess. dll文件 的路径信息;根据所述路径信息调用所述Oracle. DataAccess. dll文件,根据该文件调用 SqlBulkCopy类将所述指定数据表中的数据导入所述指定数据库中。 依据本专利技术的另一方面,提供了一种将XML文件的内容导入数据库的装置,包括: 加载单元,用于采用流方式将XML文件中的XML数据加载到内存中;数据获取单元,用于从 内存中的所述XML数据中获取数据并保存到指定数据表中;所述指定数据表的数据存储结 构与指定数据库相同;数据导入单元,用于将所述指定数据表中的数据导入所述指定数据 库中。 可选地,所述加载单元,基于XPathDocument类派生出执行流方式的方法,由该方 法采用流方式将XML文件中的XML数据加载到内存中。 可选地,所述数据获取单元,用于确定内存中的所述XML数据中的节点集;遍历内 存中的所述XML数据,读取所述节点集中的各个节点,从各个节点中获取数据并保存到所 述指定数据表中。 可选地,所述数据获取单元,基于XPathNavigator类派生出可获取当前节点的父 节点属性的方法,由该方法遍历所述节点集中的各个节点,获取各个节点的属性值并保存 到所述指定数据表中。 可选地,所述数据导入单元,调用SqlBulkCopy类将所述指定数据表中的数据导 入所述指定数据库中。 可选地,所述数据导入单元,进一步用于读取Oracle客户端的配置文件,获 取Oracle. DataAccess. dll文件的路径信息;根据所述路径信息调用所述Oracle. DataAccess. dll文件,根据该文件调用SqlBulkCopy类将所述指定数据表中的数据导入所 述指定数据库中。 由上述可知,本专利技术的技术方案,采用流方式,将XML文件中的XML数据分段加载 到内存中,有效避免了因 XML文件中的XML数据过大造成系统内存溢出的情况,再从内存中 的XML数据中获取数据并保存到与指定数据库的存储结构相同的指定数据表中,最后将所 述指定数据表中的数据导入所述指定数据库中。该技术方案不仅提升了 XML文件在读取时 的速度,且具有读取稳定不易崩溃的有益效果,并且在将XML文件中获取到的数据导入到 数据库时,先将其保存至与指定数据库的存储结构相同的指定数据表中,从而可以批量提 交数据到数据库中,大大缩短了数据库的操作时间,提高了数据的导入效率。【附图说明】 通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通 技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术 的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中: 图1示出了根据本专利技术一个实施例的一种将XML文件的内容导入数据库的方法的 流程图; 图2示出了根据本专利技术一个实施例的一种将XML文件的内容导入数据库的装置的 结构示意图。【具体实施方式】 下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开 的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例 所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围 完整的传达给本领域的技术人员。 图1示出了根据本专利技术一个实施例的一种将XML文件的内容导入数据库的方法的 流程图,如图1所示,该方法包括: 步骤S110,采用流方式将XML文件中的XML数据加载到内存中。其中,采用流方式 分段读取XML文件中的XML数据,可以方便下述步骤逐一读取XML文件中的节点,有效避免 了因 XML文件中的XML数据过大造成系统内存溢出的情况。 步骤S120,从内存中的XML数据中获取数据并保存到指定数据表中;指定数据表 的数据存储结构与指定数据库相同。 其中,可以获取XML数据中各节点数据的属性值作为需要保存的数据,指定的数 据表可以根据数据库类型的不同按需进行创建。 步骤S130,将指定数据表中的数据导入指定数据库中。 可见,图1所示的方法,采用流方式,将XML文件中的XML数据分段加载到内存中, 再从内存中的XML数据中获取数据并保存到与指定数据库的存储结构相同的指定数据表 中,最后将指定数据表中的数据导入指定数据库中。该技术方案不仅提升了 XML文件在读 取时的速度,且具有读取稳定不易崩溃的有益效果,并且在将XML文件中获取到的数据导 入到数据库时,先将其保存至与指定数据库的存储结构相同的指定数据表中,从而可以批 量本文档来自技高网...
【技术保护点】
一种将可扩展标记语言XML文件的内容导入数据库的方法,其特征在于,该方法包括:采用流方式将XML文件中的XML数据加载到内存中;从内存中的所述XML数据中获取数据并保存到指定数据表中;所述指定数据表的数据存储结构与指定数据库相同;将所述指定数据表中的数据导入所述指定数据库中。
【技术特征摘要】
【专利技术属性】
技术研发人员:李强,
申请(专利权)人:江苏国泰新点软件有限公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。