Tag: load data infile

使用C#将XML文件加载到MySQL的最快方法是什么?

题 将大型(> 1GB)XML文件转储到MySQL数据库的最快方法是什么? 数据 有问题的数据是StackOverflow Creative Commons Data Dump。 目的 这将在我正在构建的离线StackOverflow查看器中使用,因为我希望在我无法访问互联网的地方进行一些学习/编码。 我希望在项目完成后将其发布到StackOverflow成员的其余部分以供自己使用。 问题 最初,我一次读取XML /写入DB一条记录。 这需要大约10个小时才能在我的机器上运行。 我正在使用的hacktastic代码现在将500个记录抛出到一个数组中,然后创建一个插入查询以一次加载所有500个(例如“ INSERT INTO posts VALUES (…), (…), (…) … ; “)。 虽然速度更快,但仍需要数小时才能运行。 显然,这不是最好的方法,所以我希望这个网站上的大脑会知道更好的方法。 约束 我正在使用C#构建应用程序作为桌面应用程序(即WinForms)。 我使用MySQL 5.1作为我的数据库。 这意味着诸如“ LOAD XML INFILE filename.xml ”之类的function在此项目中不可用,因为此function仅在MySQL 5.4及更高版本中可用。 这种约束很大程度上是因为我希望该项目对我以外的人有用,而且我宁愿不强迫人们使用Beta版本的MySQL。 我希望将数据加载到我的应用程序中(即没有指令“在运行此应用程序之前使用’foo’将转储加载到MySQL中。”)。 我正在使用MySQL Connector / Net,因此MySql.Data命名空间中的任何内容都是可以接受的。 感谢您提供的任何指示! 到目前为止的想法 将整个XML文件加载到列中的存储过程,然后使用XPath对其进行解析 这不起作用,因为文件大小受max_allowed_pa​​cket变量的限制,默认情况下设置为1 MB。 这远远低于数据转储文件的大小。