4

我有一个要求,我需要使用 asp.net/C# 读取一个 excel 表并将所有记录插入到 mysql 表中。该 excel 表由大约 2000 行和 50 列组成。目前,在读取 excel 记录后,我正在使用准备语句将记录一一插入到 mysql 表中。但是由于数据量巨大,这样做需要大约 70 秒。

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

有人可以建议是否有替代方法来提高插入的性能?

谢谢

4

1 回答 1

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

无论如何,每条命令一次插入的方法是让您付出代价的。

于 2010-06-02T01:25:19.573 回答