[英]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.