我需要使用asp.net/C#读取excel表并将所有记录插入到mysql表中.excel表包含大约2000行和50列。目前,在阅读excel记录时,我使用prepare语句将记录逐个插入到mysql表中。但由于数据庞大,它需要大约70秒才能完成。
我还想过创建一个新的数据行,为每个单元格分配值,将得到的数据行添加到datatable,最后调用dataadapter.update(...)。但它似乎很复杂,因为我有大约50列因此我必须为数据行分配50个值。
有人可以建议是否有替代方案来提高插入效果吗?
由于
答案 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个插入,然后执行它。
无论如何,每命令单插入方法都会让你付出代价。