2013-03-15 123 views
0

我必须创建一个具有超过60个milllion记录的大型XML文件。 我需要一个快速的方法来做这个操作,因为它会定期重复。为数百万条记录创建XML

我在两个地方

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

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

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

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

我打开文件处理使用Linux命令以及提供它是一个更快的选项。

更新评论

  • 你能多快可以从两个单独的文件的XML元素信息VS DB查询CSV倾倒? PIPE分隔文件中提供了数据库中可用的任何内容。 以及FAST如何获取/创建XML元素信息正是此处问题的意图。这正是影响整体运营速度的因素。

  • 映射并发症:映射从1到很多。第一个文件中的1个记录映射到第二个文本文件/表中的大约8000个记录。

UPDATE on Comment - >使用大输出缓冲区。

了解。将以更大的块读取数据库/文件中的数据,并在处理完整块后将其刷新。但我应该再次通过数据库读取或文件读取吗?

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

+1

数据库是有意义的查询和报告。我会将查询输出转储为CSV并生成XML输出。因此,在XML生成的时候,数据库是独立的;这可能需要很长时间。在保存到输出XML文件之前,请使用较大的输出缓冲区。 – SparKot 2013-03-15 10:39:40

+0

啊,用'pipe separated fields'选项你需要进行基准测试。使用大输入缓冲区进行文件读取。您可以从两个单独的文件与数据库查询CSV转储获取XML元素信息的速度有多快?这两个文件之间的映射有多复杂?它是'1-1'吗?是在这些文件中排序的记录,比如说“主键”? – SparKot 2013-03-15 10:50:39

+0

@SparKot - >“保存到输出XML文件之前使用大输出缓冲区”是什么意思。 ? – 2013-03-15 13:17:55

回答

0

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

+0

- >它会比从数据库中逐行读取数据并创建XML文件更高效吗? – 2013-03-15 13:16:19

+0

目前尚不清楚它甚至不同于此,更不用说更高效了。 – EJP 2013-03-16 07:21:39