如何将存储在XML文件中的数据转换为关系数据库(MySQL)?

时间:2012-11-30 11:20:30

标签: mysql sql xml relational-database data-conversion

我有一些XML文件包含研究项目的数据,我需要运行一些统计数据。数据量接近100GB。

结构不是那么复杂(可能映射到关系模型中的10个表),并且考虑到问题的性质,这些数据永远不会再次更新,我只需要它在一个容易的地方可用在。上运行查询。

我已经阅读过有关XML数据库的信息,以及在其上运行XPATH风格查询的可能性,但我从未使用它们,而且我对它不太满意。将数据放在关系数据库中将是我的首选。

所以,我正在寻找一种方法来将存储在XML中的数据转换为关系数据库(想想一个类似于mysqldump生成的大.sql文件,但其他任何事情都可以)。 最终目标是能够运行SQL查询来处理数据。

经过一些研究,我几乎确信我必须自己写。 但我觉得这是一个常见的问题,因此应该有一个已经做到这一点的工具。

那么,您是否知道将XML数据转换为关系数据库的任何工具?

PS1:

我的想法会是这样的(它可以有所不同,但只是为了确保你明白我的观点):

  1. 分析数据结构(基于XML本身,或在XSD上)
  2. 基于该结构构建关系数据库(表,键)
  3. 生成SQL语句以创建数据库
  4. 生成SQL语句以创建数据填充
  5. PS2:

    我在SO中看过some posts,但我仍然无法找到解决方案。 微软的“Xml Bulk Load”工具似乎在这方面做了一些事情,但我没有MS SQL Server。

5 个答案:

答案 0 :(得分:3)

数据库不是搜索数据的唯一方式。我强烈推荐Apache Solr

将原始数据保存为XML并使用Solr索引

进行搜索

答案 1 :(得分:3)

将格式正确的XML文件 导入MySql数据库非常简单:

https://dev.mysql.com/doc/refman/5.6/en/load-xml.html

这意味着,您通常必须将XML数据转换为这种格式。你如何做到这一点取决于转换的复杂性,你知道什么编程语言,以及你是否想要使用XSLT(这可能是一个好主意)。

根据您以前的答案,您似乎了解Python,因此http://xmlsoft.org/XSLT/python.html对您来说可能是正确的。

答案 2 :(得分:2)

查看StAX而不是XSD来分析/提取数据。它是基于流的,可以处理大量的XML文件。

答案 3 :(得分:1)

如果您对Perl感到满意,我可以很好地使用XML::Twig模块来处理非常大的XML文件。

基本上,您只需设置几个树枝处理程序并使用DBI / DBD::mysql将数据导入MySQL。

xmltwig.org上有很好的例子。

答案 4 :(得分:1)

如果您对商业产品感到满意,可能需要查看SQL Maestro Group的Data Wizard for MySQL

此应用程序主要针对导出,当然还有从/向MySQL数据库导入数据。这也是includes XML import。您可以下载30天的试用版,以检查这是否是您要找的。

我不得不承认我还没有使用他们的MySQL产品系列,但我在Firebird Maestro和SQLite Maestro产品方面拥有良好的用户体验。