如何处理解析一个大的xml文件并将其保存在数据库中

问题描述:

我有一个相当大的xml文件(大于2mb),我正在解析并存储在sqlite数据库中。我可以解析它并首次将它存储好。我的问题是当我想再次解析xml文件(更改,添加或删除)时更新数据库。我最初的想法是只擦除数据库中的信息并重新插入,而不是解析数据,检查给定的项目是否已经在数据库中并进行更新。有没有比另一种更好的方法?会有这样或那样的表现吗?我很感激任何关于此事的想法。如何处理解析一个大的xml文件并将其保存在数据库中

是的,重新插入可能是一个坏主意。 xml结构有多复杂,如果查询结构反映的某个项的存在,涉及多少个表?

如果它很复杂,您可以创建条目的校验和或某些属性和值的散列,这些属性和值可以唯一标识一条记录,并在查找修改时将散列/校验和存储在数据库的额外表中您只需计算哈希/校验和,并在一张表中查找它。也许这甚至会提高查询速度,取决于哈希计算的成本。

+0

我喜欢为给定项目的属性创建哈希值的想法。这里涉及大约7张桌子。你会如何建议删除?将它标记为在xml文件中删除? – Pzanno

+0

另外,在给定的'item'查询中,最多只会涉及3个表格。 – Pzanno

+0

给你的第一个评论:如果这是一个选项,可能是最简单的方法。 – Bernhard

只插入需要更改的内容显然比转储整个数据库和重新插入要快。至少这是我的想法。

我想这取决于您检查的信息有多复杂,以及您的代码在执行该过程时的效率如何。如果你不喜欢这样的验证,那么倾销和重新插入将是一个更安全的选择。

+0

感谢您的回复。要更新,我必须执行一个select来查看给定的'item'是否存在,以及它是否对它执行更新。但是,它变得有点复杂。我正在处理7个不同的表格。 4通过FK链接在一起,另外3链接在一起。 – Pzanno