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

时间:2010-06-01 08:24:46

标签: asp.net mysql bulk insertion

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

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

有人可以建议是否有替代方案来提高插入效果吗?

由于

1 个答案:

答案 0 :(得分:2)

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个插入,然后执行它。

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