如何将大型 XML 文件转换为 CSV 文件?

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

因为需要构建知识图谱,我想将3.39GB的XML数据文件转换为CSV格式,但是当我尝试Python时,我的电脑内存不足了。

以下代码:

import glob
import pandas as pd
import xml.etree.ElementTree as ET
import os

def xml_to_csv(path):
    xml_list = []
    for xml_file in glob.glob(path + '/Badges.xml'): 
        print('**********************************')
        print(xml_file)
        tree = ET.parse(xml_file)
        root = tree.getroot()
        # for member in root.findall('row'):
        for member in root.findall('row'):
            value = (member.attrib.get('Id', ''),
                     member.attrib.get('UserId', ''),
                     member.attrib.get('Name', ''),
                     member.attrib.get('Date', ''),
                     member.attrib.get('Class', ''),
                     member.attrib.get('TagBased', ''),
                     )
            xml_list.append(value)



    column_name = ['Id', 'UserId', 'Name', 'Date', 'Class','TagBased']
    xml_df = pd.DataFrame(xml_list, columns = column_name)
    # print('----------------')
    # print(xml_df)
    return xml_df


if __name__ == "__main__":

    xml_path = 'D:/【论文】/【数据集】/1-StackOverflow数据集-2008-2021/stackoverflow.com-Badges'
    print(os.path.exists(xml_path))
    xml_df = xml_to_csv(xml_path)
    print('**********************************')
    print(xml_df)
  
    xml_df.to_csv('D:/【论文】/【数据集】/1-StackOverflow数据集-2008-2021/stackoverflow.com-Badges/Badges.csv', index = None)
    print('Successfully converted xml to csv.')
python-3.x xml csv
3个回答
0
投票

有多种用于 XML 流处理的技术。其中之一是 XSLT 3.0,您可以在其中编写

<xsl:mode streamable="yes"/>
<xsl:output method="text"/>
<xsl:template match="row">
  <xsl:value-of select="@Id, @UserId, @Name, @Class, @TagBased"
     separator=","/>
  <xsl:text>&#xa;</xsl:text>
</xsl:template>

0
投票

我尝试了MySQL,将XML数据集文件导入数据库,然后导出为CSV格式,仅用了3个小时就处理了82.2GB的文件。 [https://i.sstatic.net/kIiLu.png][1]


0
投票

要有效地将大型 XML 文件转换为 CSV 格式,请考虑使用 Sonra Flexter。 Flexter 专注于高效处理复杂的 XML 数据,并可以将其转换为 CSV 文件,从而更轻松地进行数据分析和集成。有关 Flexter 如何简化数据转换过程的更多信息,请查看此转换器。该解决方案旨在精确处理大型数据集,使其成为满足您转换需求的可靠选择。

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