在Linux上,将XML解析为MYSQL的最有效方法是什么?

时间:2011-10-11 04:14:55

标签: xml linux perl shell xml-parsing

我想将XML文件解析为MYSQL数据库。

在LINUX系统(Ubuntu)上执行此操作的最有效,最快捷的方法是什么,资源最少。

我有大约1GB的XML文件,我需要每15分钟解析一次。每个XML大约60KB。

我正在考虑使用Shell或Perl,并自己构建解析器或获取某种XML工具。

我愿意接受任何建议。

3 个答案:

答案 0 :(得分:2)

到目前为止,我见过的最快的XML(非验证)解析器是VTD-XML。它可以在任何地方使用,性能至关重要。为了给出一些数字,在Core2 2.5 Ghz上,VTD-XML的性能优于DOM解析器5x~12x,每核心持续吞吐量可提供150~250 MB /秒。

按照这个速度,可以在10秒内解析1 GB的XML。如果解析成功,您可以随机遍历内存中的数据结构,或使用XPath获取数据。

根据您的要求(1 GB XML输入),您必须考虑到VTD-XML需要1.3~1.5 GB的系统RAM,因为它必须构建内存数据结构来访问已分析的数据,以及XML文本本身。

VTD-XML库可用于C#,Java,C ++,C,需要一些时间才能习惯,因为它有一些学习曲线,但从长远来看,它可能会开始回报。

如果可用内存不足,则流解析器(SAX)应该是更适合该作业的工具。

答案 1 :(得分:0)

将xml文件插入mysql表然后使用MySQL的XML函数提取值是否是更好的选择?您可以参考以下链接:

http://rpbouman.blogspot.com/2006/03/importing-xml-data-into-mysql-using.html

答案 2 :(得分:0)

将大量数据导入MySQL的最快方法是使用LOAD DATA INFILE将数据从文件加载到PK顺序的无密钥表中。考虑到你很可能会受到DB性能的限制,为了将LOAD数据转换为CSV /任何文件,然后将其一次性地插入数据库,可能值得付出代价。

比照。 http://mysqldump.azundris.com/archives/94-LOAD-DATA-INFILE-and-mysqldump.html