我有一些XML文件包含研究项目的数据,我需要运行一些统计数据。数据量接近100GB。
结构不是那么复杂(可能映射到关系模型中的10个表),并且考虑到问题的性质,这些数据永远不会再次更新,我只需要它在一个容易的地方可用在。上运行查询。
我已经阅读过有关XML数据库的信息,以及在其上运行XPATH风格查询的可能性,但我从未使用它们,而且我对它不太满意。将数据放在关系数据库中将是我的首选。
所以,我正在寻找一种方法来将存储在XML中的数据转换为关系数据库(想想一个类似于mysqldump
生成的大.sql文件,但其他任何事情都可以)。
最终目标是能够运行SQL查询来处理数据。
那么,您是否知道将XML数据转换为关系数据库的任何工具?
PS1:
我的想法会是这样的(它可以有所不同,但只是为了确保你明白我的观点):
PS2:
我在SO中看过some posts,但我仍然无法找到解决方案。 微软的“Xml Bulk Load”工具似乎在这方面做了一些事情,但我没有MS SQL Server。
答案 0 :(得分:3)
答案 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天的试用版,以检查这是否是您要找的。 p>
我不得不承认我还没有使用他们的MySQL产品系列,但我在Firebird Maestro和SQLite Maestro产品方面拥有良好的用户体验。