【问题标题】:XML creation for millions of records为数百万条记录创建 XML
【发布时间】:2013-03-15 09:51:35
【问题描述】:

我必须创建一个包含超过 6000 万条记录的大型 XML 文件。 我需要一种快速的方法来执行此操作,因为它会定期重复。

我在两个地方有数据

  1. 在两个不同表中的数据库中。
  2. 关于文件系统 在两个管道分隔的文件中。

目前,我正在尝试使用 StaX 解析器在 JAVA 中创建 XML 文件。

这里我需要知道是否应该使用数据库/文本文件来读取数据并创建 XML 文件。

哪一个会更快?
此外,是否有任何特定的 API 可以以优化的方式处理将此类大数据创建/转换为 XML 的方式?

我也愿意使用 linux 命令进行文件处理,前提是它是一个更快的选项。

评论更新

  • 从两个单独的文件与 DB Query CSV 转储中获取 XML 元素信息的速度有多快? 数据库中可用的任何内容都可以在 PIPE 分隔文件中使用。 我们如何快速获取/创建 XML 元素信息正是这里问题的意图。这正是影响整体运行速度的因素。

  • 映射复杂性:映射是一对多。第一个文件中的 1 条记录映射到第二个文本文件/表中的大约 8000 条记录。

评论更新 -> 使用大输出缓冲区。

明白了。将以较大的块从数据库/文件中读取数据,并在我处理完一个完整的块后将其刷新。但是我应该再次读取数据库还是读取文件?

更新 我可以使用 MySQL 数据库中的任何工具将其导出,自动转换为 XML 格式吗?

【问题讨论】:

  • 数据库对于有意义的查询和报告非常有用。我会将查询输出转储到 CSV 并生成 XML 输出。因此,在生成 XML 时,DB 被单独留下;这可能需要很多时间。在保存到输出 XML 文件之前使用大的输出缓冲区。
  • 啊,使用pipe separated fields 选项,您需要进行基准测试。使用大输入缓冲区进行文件读取。从两个单独的文件与 DB Query CSV 转储中获取 XML 元素信息的速度有多快?这两个文件之间的映射有多复杂?是1-1 吗?这些文件中的记录是否按primary key 排序?
  • @SparKotॐ ->“在保存到输出 XML 文件之前使用大的输出缓冲区”是什么意思。 ?
  • 将数据追加到内存比追加到文件要快。阅读也是如此。
  • 明白。将以较大的块从数据库/文件中读取数据,并在我处理完一个完整的块后将其刷新。但是我应该再次通过数据库读取还是文件读取来做?

标签: java mysql xml stax


【解决方案1】:

您可以使用 perlXML::Simple / XML::Writer perl 模块。 Perl 还能够从数据库和文本文件中读取数据。

【讨论】:

  • -> 会比从DB中逐行读取数据并创建XML文件更高效吗?
  • 并不清楚它甚至与那个不同,更不用说更高效了。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2019-09-16
  • 1970-01-01
  • 2023-01-31
  • 2016-03-06
  • 1970-01-01
相关资源
最近更新 更多