python - 慢速将大文件保存到数据库中

时间:2018-03-10 10:36:32

标签: python xml postgresql

我必须解析XML文件中的数据,每个文件都有超过170k行。结构如下:

<el1>
    <el2>
        <el3>
            <el3-1>...</el3-1>
            <el3-2>...</el3-2>
        </el3>
        <el4>
            <el4-1>...</el4-1>
            <el4-2>...</el4-2>
        </el4>
        <el5>
            <el5-1>...</el4-1>
            <el5-2>...</el5-2>
        </el5>
    </el2>
</el1>

基本上我需要保存&#34; el&#34;标签和每个标签代表数据库中的一个表。所以我从el1中的属性中获取值并将它们插入到表等中。事实是,有很多标签el3,el4,el5,...我想当我在每个之后调用INSERT时,它减慢整个过程,因为1个文件大约需要3分钟保存到数据库中。

我想我可以通过将值保存到列表中来解决这个问题,当处理文件时,我运行1 INSERT命令来保存所有值。但问题是在我执行INSERT命令之前,我从前一个元素中选择最后一个插入的id,并将其作为外键放入下一个元素的INSERT命令中。如果我想将值保存到列表中,我无法从数据库中获取最后一个id,因为插入将在文件末尾发生。

我不知道整个过程是否因为大量INSERT命令而变慢,这只是我的猜测。

1 个答案:

答案 0 :(得分:0)

如果您还没有这样做,请在单个事务中运行所有INSERT语句,这会产生很大的不同。

要获得更好的答案,请提供更多数据,例如您的代码,系统以及您每秒达到的交易次数。