【发布时间】:2018-03-10 10:36:32
【问题描述】:
我必须从 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>
基本上我需要保存“el”标签中的属性,每个标签代表数据库中的一个表。所以我从 el1 中的属性中获取值并将它们插入到表等中。问题是,有很多标签 el3、el4、el5 ......我想当我在每个标签之后调用 INSERT 时,它减慢整个过程,因为 1 个文件需要大约 3 分钟才能保存到数据库中。
我想我可以通过将值保存到列表中来解决这个问题,当处理文件时,我运行 1 INSERT 命令来保存所有值。但问题是在我执行INSERT命令之前,我从上一个元素中选择了最后插入的id,并将其作为他的外键放入下一个元素的INSERT命令中。如果我想将值保存到列表中,我无法从数据库中获取最后一个 id,因为插入将发生在文件末尾。
不知道是不是因为INSERT命令太多导致整个过程变慢了,这只是我的猜测。
【问题讨论】:
-
"slow" 是相对的,你没有5个太多的信息。对于这样的数据,我认为第一种方法应该还是最好的:保持简单。但是你如何读取xml(以及你使用了哪个模块),你如何插入行,你如何配置postgresql等等。这样的问题影响很大。
标签: python xml postgresql