如何提高DataTable.Load()的性能?

时间:2012-04-19 13:26:49

标签: c# .net datatable

我目前使用Codeproject中的自定义CSV类来创建CSV对象。然后我用它来填充DataTable。在分析中,这比我想要花费更多的时间,我想知道是否有更有效的方法呢?

CSV包含大约2,500行和500列。

CSV阅读器来自:http://www.codeproject.com/Articles/9258/A-Fast-CSV-Reader

StreamReader s = new StreamReader(confirmedFilePath);
CsvReader csv = new CsvReader(s, true);
DataTable dt = new DataTable();
dt.Load(csv);

我遇到了谷歌搜索建议DataAdapter,但它只是一个参考吗?我进一步搜索,但没有找到合作。

3 个答案:

答案 0 :(得分:1)

CsvReader快速可靠,我几乎可以肯定你找不到更快的东西(如果有的话)来读取CSV数据。

限制来自DataTable处理新数据,2500 * 500即数量。我认为最快的方法是直接使用CsvReader-> DataBase(ADO.NET)链。

答案 1 :(得分:0)

尝试GenericParser

答案 2 :(得分:0)

从数据库填充时始终使用BeginLoadData()EndLoadData(),因为它们已经自己强制执行约束 - 唯一的缺点是CSV文件显然没有,因此任何异常只会在整个操作结束。

...
dt.BeginLoadData();
dt.Load(csv, LoadOption.Upsert);
dt.EndLoadData();

编辑:仅当LoadOption.Upsert为空,或者您不想保留现有数据的任何先前更改时才使用DataBase - 它更快方式。