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

10
我有一些包含研究项目数据的XML文件,需要对其运行一些统计分析。数据量接近100GB。
结构并不复杂(可以映射到关系模型中的大约10个表),考虑到问题的性质,这些数据将永远不会再次更新,我只需要在一个易于查询的地方可用。
我已经了解了XML数据库,并且可以在其中运行类似XPATH的查询,但我从未使用过,并且对此不太熟悉。将数据存储在关系数据库中是我的首选。
因此,我正在寻找一种将存储在XML中的数据转换为关系数据库的方法(类似于由mysqldump生成的大型.sql文件)。最终目标是能够运行SQL查询来处理数据。
经过一些研究,我几乎相信我必须自己编写它。但我觉得这是一个常见的问题,因此应该有一个已经完成这项工作的工具。
那么,你知道任何可以将XML数据转换为关系数据库的工具吗? PS1:

我的想法是这样的(它可能有不同的工作方式,但只是为了确保你明白我的意思):

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

PS2:

我在 SO 上看到了一些 帖子,但仍然找不到解决方案。 微软的 "Xml Bulk Load" 工具似乎朝着这个方向做了一些事情,但我没有 MS SQL Server。

5个回答

5

不知道这个。一定会试试看。谢谢! - E.Z.

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

不要使用XSD来分析/提取数据,可以考虑使用StAX。它基于流式处理,能够处理大型XML文件。


1

如果您对Perl感到熟悉,我在处理非常大的XML文件时使用XML::Twig模块时运气还不错。

基本上,您所需的就是设置几个twig处理程序,并使用DBI/DBD::mysql将数据导入MySQL。

这里有一个相当不错的例子在xmltwig.org


1

如果您喜欢商业产品,您可能想看看SQL Maestro Group的Data Wizard for MySQL

该应用程序专门针对从/到MySQL数据库导出和导入数据,包括XML导入。您可以下载30天的试用版来检查是否符合您的需求。

我必须承认,我还没有使用过他们的MySQL产品线,但是我在他们的Firebird Maestro和SQLite Maestro产品中有良好的用户体验。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接