我想将XML文件解析为MYSQL数据库。
在LINUX系统(Ubuntu)上执行此操作的最有效,最快捷的方法是什么,资源最少。
我有大约1GB的XML文件,我需要每15分钟解析一次。每个XML大约60KB。
我正在考虑使用Shell或Perl,并自己构建解析器或获取某种XML工具。
我愿意接受任何建议。
答案 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