首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何提高DataTable.Load()的性能?

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

Stack Overflow用户
提问于 2012-04-19 21:26:49
回答 3查看 2.5K关注 0票数 2

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

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

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

代码语言:javascript
复制
StreamReader s = new StreamReader(confirmedFilePath);
CsvReader csv = new CsvReader(s, true);
DataTable dt = new DataTable();
dt.Load(csv);

我偶然在谷歌上搜索到一个DataAdapter,但只有一个引用了这个?我进一步搜索,但没有找到任何合作。

EN

回答 3

Stack Overflow用户

发布于 2012-04-19 22:20:13

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

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

票数 1
EN

Stack Overflow用户

发布于 2012-04-19 21:39:55

试一试GenericParser

票数 0
EN

Stack Overflow用户

发布于 2012-12-02 05:41:36

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

代码语言:javascript
复制
...
dt.BeginLoadData();
dt.Load(csv, LoadOption.Upsert);
dt.EndLoadData();

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10229118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档