如何从asp.net立即将批量数据插入到mysql表中

我需要使用asp.net/C#读取excel表并将所有记录插入到mysql表中.excel表包含大约2000行和50列.目前,在阅读excel记录后,我将使用prepare语句逐个插入到mysql表中.但由于数据庞大,它需要大约70秒.

我还想过创建一个新的数据行,为每个单元格赋值,将结果数据流添加到datatable,最后调用dataadapter.update(…).但它似乎很复杂,因为我有大约50列,因此我必须为数据行分配50个值.

有人可以建议是否有替代方案来改善插入的性能?

谢谢

解决方法:

MySQL LOAD DATA INFILE类似于MS SQL的BULK INSERT,它将为您提供最佳性能.

您可以在循环浏览Excel单元格时连接文本文件,但为了获得更高的性能提升,请尝试一次性从Excel导出文件 – 我不确定您需要如何精确导出文件(分隔符等)

编辑:

或者,如果你没有胃/时间来尝试这样的事情,至少可以将尽可能多的VALUES行传递到单个INSERT语句中:

INSERT INTO tbl_name(a,b,c)VALUES(1,2,3),(4,5,6),(7,8,9); (也来自MySQL网站.)

我不知道5000是否高于理论极限 – 可能? – 所以每个语句只能组装100个插入,然后执行它.

无论如何,每命令单插入方法都会让你付出代价.

上一篇:Redis执行lua脚本,key不存在的返回值


下一篇:java – Spring批处理一次处理多个项目