【问题标题】:How to convert data stored in XML files into a relational database (MySQL)?如何将存储在 XML 文件中的数据转换为关系数据库(MySQL)?
【发布时间】:2012-11-30 11:20:29
【问题描述】:

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

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

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

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

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

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

PS1:

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

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

PS2:

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

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

    • 不知道。肯定会试一试。谢谢!
    【解决方案2】:

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

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

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

    从你之前的回答看来你知道 Python,所以http://xmlsoft.org/XSLT/python.html 可能是你开始的正确选择。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

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

        xmltwig.org 上有很好的例子。

        【讨论】:

          【解决方案5】:

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

          此应用程序专门用于导出数据,当然也可以从 MySQL 数据库导入数据。这也是includes XML import。您可以下载 30 天试用版来检查这是否是您要找的。​​p>

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-30
            • 2012-07-06
            • 1970-01-01
            • 2018-05-24
            • 1970-01-01
            相关资源
            最近更新 更多