Age*_*rum 12 c# xml mysql load-data-infile
将大型(> 1GB)XML文件转储到MySQL数据库的最快方法是什么?
有问题的数据是StackOverflow知识共享数据转储.
这将用于我正在构建的离线StackOverflow查看器,因为我希望在我无法访问互联网的地方进行一些学习/编码.
我希望在项目完成后将其发布到StackOverflow成员的其余部分以供自己使用.
最初,我一次读取XML /写入DB一条记录.这需要大约10个小时才能在我的机器上运行.我正在使用的hacktastic代码现在将500条记录抛出到一个数组中,然后创建一个插入查询以一次加载所有500条(例如" INSERT INTO posts VALUES (...), (...), (...) ... ;").虽然速度更快,但仍需要数小时才能运行.显然这不是最好的方法,所以我希望这个网站上的大脑会知道更好的方法.
LOAD XML INFILE filename.xml"之类的功能在此项目中不可用,因为此功能仅在MySQL 5.4及更高版本中可用.这种约束很大程度上是因为我希望该项目对我以外的人有用,而且我宁愿不强迫人们使用Beta版本的MySQL.MySql.Data命名空间中的任何内容都是可以接受的.感谢您提供的任何指示!
到目前为止的想法
将整个XML文件加载到列中的存储过程,然后使用XPath对其进行解析
Shi*_*iji 12
这有两个部分:
对于读取xml文件,此链接http://csharptutorial.blogspot.com/2006/10/reading-xml-fast.html显示,使用流读取器可以在2.4秒内读取1 MB,即2400秒或对于1 GB文件,40分钟(如果我的数学工作这么晚).
从我所读到的,获取数据到MySQL的最快方法是使用LOAD DATA.
http://dev.mysql.com/doc/refman/5.1/en/load-data.html
因此,如果您可以读取xml数据,将其写入LOAD DATA可以使用的文件,然后运行LOAD DATA.总时间可能少于您正在试验的小时数.