繁体   English   中英

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

[英]Ways to increase performance of DataTable.Load()?

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

CSV包含大约2500行和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);

我遇到了一个Google搜索,建议使用DataAdapter,但这只是对此的一个参考? 我进行了进一步搜索,但未找到任何合作。

CsvReader快速可靠,我几乎可以肯定,您找不到读取CSV数据的最快方法(如果有的话)。

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

尝试一下GenericParser

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM