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

问题描述 投票:0回答:6

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

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

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

因此,我正在寻找一种方法将存储在 XML 中的数据转换为关系数据库(想象一个类似于

mysqldump
生成的大 .sql 文件,但其他任何东西都可以)。 最终目标是能够运行 SQL 查询来处理数据。

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

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

PS1:

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

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

PS2:

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

mysql sql xml relational-database data-conversion
6个回答
5
投票

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

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


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
投票

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


1
投票

如果您对 Perl 感到满意,我很幸运使用

XML::Twig
模块来处理非常大的 XML 文件。

基本上,您所需要的只是设置一些树枝处理程序并使用

DBI
/
DBD::mysql
将数据导入 MySQL。

xmltwig.org 上有很好的例子。


1
投票

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

该应用程序特别针对从 MySQL 数据库导出数据以及将数据导入到 MySQL 数据库。这还包括 XML 导入。您可以下载 30 天试用版来检查这是否是您想要的。

我必须承认,我还没有使用过他们的 MySQL 产品线,但是他们的 Firebird Maestro 和 SQLite Maestro 产品给我带来了很好的用户体验。


0
投票

如果几年后对某人有用,您可以使用Python包xml2db。它的作用正是您在原始问题中所描述的:

  • 从 XSD 文件加载数据模型,
  • 创建与外键约束相关的数据库表,
  • 解析 XML 文件并将其加载到数据库中。

对于大多数模式来说,它应该是开箱即用的,不需要手动编写映射。包文档解释了如何将 XML 加载到关系数据库

我要补充的一个警告是,它当前解析内存中的 XML 文件,因此它不适用于巨大的单个文件(在原始问题中并不清楚要加载的文件的单个大小是多少)。

© www.soinside.com 2019 - 2024. All rights reserved.