簡體   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