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

标签 xml linux perl shell xml-parsing

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

在 LINUX 系统 (Ubuntu) 上执行此操作最有效、最快速且资源占用最少的方法是什么。

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

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

我愿意接受任何建议。

最佳答案

到目前为止,我见过的最快的 XML(非验证)解析器是 VTD-XML .它可用于任何性能至上的地方。给出一些数字,在 Core2 2.5 Ghz 上,VTD-XML 的性能比 DOM 解析器高出 5 到 12 倍,每个内核提供 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 ) 应该是更适合这项工作的工具。

关于xml - 在 Linux 上,将 XML 解析为 MYSQL 的最有效方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7721304/

相关文章:

perl - 如何使用 Perl 检测 XSS Reflect

regex - Perl:删除较长字符串中的首字母缩略词连字符

android - 如何优化此布局 XML 文件以符合我的想法?

xml - BizTalk EDI 架构中的日期范围验证

linux - 使用文件查找文件夹位置 Linux Bash

linux - 找到一个.txt文件并写入其中

android - 如何找出 strace 输出中的这些 syscall_983045、syscall_322 系统调用?

string - 变量没有在 Perl 字符串中扩展?

java - 从java中的字符串中删除无效的XML字符

xml - 如何在 XSLT 中应用或链接多个匹配模板?