XML文件的大分割

sam*_*kar 16 xml

我有一个15 GB的XML文件,我想把它拆分.它有大约3亿行.它没有任何相互依赖的顶级节点.是否有任何工具可供我使用?

Gfy*_*Gfy 10

XmlSplit - 分割大型XML文件的命令行工具

xml_split - 将大型XML文档拆分为较小的块

通过bhayanakmaut拆分XML(没有源代码,我无法使这个工作)

一个类似的问题:如何拆分大型xml文件?


Cer*_*rus 5

我认为除非您有兴趣以编程方式进行拆分,否则您必须手动拆分。下面是一个执行此操作的示例,但它没有提及所处理的 XML 文件的最大大小。手动执行时,出现的第一个问题是如何打开文件本身。

我会推荐一个非常简单的文本编辑器 - 比如Vim。处理如此大的文件时,关闭所有形式的语法突出显示和/或折叠总是有用的。

其他值得考虑的选择:

  1. EditPadPro - 我从未尝试过使用这种尺寸的任何东西,但如果它与其他 JGSoft 产品类似,它应该可以轻松工作。请记住关闭语法突出显示。

  2. VEdit - 我已经将它用于 1GB 大小的文件,工作起来就好像它什么都没有一样。

  3. 编辑器


Ben*_*ant 5

这是一个低内存占用脚本,可使用 CMarkup 文件模式在免费的firstobject XML 编辑器(foxe)中执行此操作。我不确定你所说的没有相互依赖的顶部节点或标签检查是什么意思,但假设在根元素下有数百万个顶级元素,其中包含对象属性或行,每个元素都需要作为一个单元保存在一起,并且你想说每个输出文件 100 万个,你可以这样做:

split_xml_15GB()
{
  int nObjectCount = 0, nFileCount = 0;
  CMarkup xml输入,xml输出;
  xmlInput.Open( "15GB.xml", MDF_READFILE );
  xmlInput.FindElem(); // 根
  str sRootTag = xmlInput.GetTagName();
  xmlInput.IntoElem();
  while ( xmlInput.FindElem() )
  {
    if ( nObjectCount == 0 )
    {
      ++n文件计数;
      xmlOutput.Open( "piece" + nFileCount + ".xml", MDF_WRITEFILE );
      xmlOutput.AddElem( sRootTag );
      xmlOutput.IntoElem();
    }
    xmlOutput.AddSubDoc( xmlInput.GetSubDoc() );
    ++n对象计数;
    if ( nObjectCount == 1000000 )
    {
      xmlOutput.Close();
      n对象计数 = 0;
    }
  }
  if ( nObjectCount )
    xmlOutput.Close();
  xmlInput.Close();
  返回nFileCount;
}

我在这里发布了有关此内容的 YouTube 视频和文章:

http://www.firstobject.com/xml-splitter-script-video.htm


小智 5

QXMLEdit具有专用的功能:我在Wikipedia转储中成功使用了它。〜2.7Gio文件变成了一堆〜1,400,000个文件(每页一个)。它甚至允许您在子文件夹中分派它们。