8

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

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

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

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

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

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

PS1:

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

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

PS2:

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

4

5 回答 5

4

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

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

于 2012-11-30T11:51:47.930 回答
3

将正确格式的XML 文件导入MySql 数据库很容易:

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

这意味着,您通常必须将 XML 数据转换为这种格式。您如何执行此操作取决于转换的复杂性、您了解的编程语言以及是否要使用 XSLT(这很可能是一个好主意)。

从您以前的答案看来,您似乎了解 Python,因此http://xmlsoft.org/XSLT/python.html可能是您开始的正确选择。

于 2012-11-30T12:03:12.977 回答
2

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

于 2012-11-30T12:47:47.187 回答
1

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

此应用程序特别针对导出数据,当然也可以从 MySQL 数据库导入数据。这也包括 XML 导入。您可以下载 30 天试用版以检查这是否是您正在寻找的。

我不得不承认我还没有使用他们的 MySQL 产品线,但是我对他们的 Firebird Maestro 和 SQLite Maestro 产品有很好的用户体验。

于 2012-11-30T11:48:07.830 回答
1

如果您对 Perl 感到满意,那么我在XML::Twig处理非常大的 XML 文件的模块方面非常幸运。

DBI基本上,您只需要设置一些 twig 处理程序并使用/将数据导入 MySQL DBD::mysql

xmltwig.org上有很好的例子。

于 2012-11-30T11:35:26.650 回答