CSV(逗号分隔值文件)是分隔文本文件,它使用逗号分隔值。CSV文件以純文本格式存儲表格數據。該文件的每一行都是一個數據記錄。每條記錄由一個或多個字段組成,以逗号分隔。因此CSV文件可以存儲表示數據表的數據,也可以理解為數據存儲的文件。
C# Win Form程序開發
本例CSV文件格式與後台數據表格式一緻,CSV文件内容描述如下:
CSV文件(數據隻供演示實用無實際意義)
通過實用Win Form可以讀取外部CSV文件到内存中,并逐行讀取内存中的數據,将其寫入對應DataTable實例對象中,最後通過批量複制數據類 SqlBulkCopy實例化對象将其寫入數據庫。其實現關鍵方法與步驟描述如下:
(1)讀取文件到内存并實例化StreamReader類
FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read); sr = new StreamReader(fs);
其中filepath為CSV文件的存儲路徑,以讀取的形式打開該文件,執行後數據被讀取到sr中。
(2)創建DataTable對象實例用于接收内存中存儲的CSV數據
DataTable dt = new DataTable(); dt.Columns.Add("id", System.Type.GetType("System.String")); dt.Columns.Add("IdNumber", System.Type.GetType("System.String")); dt.Columns.Add("Name", System.Type.GetType("System.String")); dt.Columns.Add("Gender", System.Type.GetType("System.String")); dt.Columns.Add("Occupation", System.Type.GetType("System.String")); dt.Columns.Add("Province", System.Type.GetType("System.String")); dt.Columns.Add("skills", System.Type.GetType("System.String")); 以上代碼完成dt的實例化并且确定了數據表所包含的類
(3)逐行讀取内存sr中的CSV數據并寫入dt中
while ((str = sr.ReadLine()) != null) { string[] csvdata = str.Split(',');//行讀取到數組中,按照逗号進行劃分 DataRow dataRow = dt.NewRow();//創建新行 dataRow[0] = csvdata[0]; dataRow[1] = csvdata[1]; dataRow[2] = csvdata[2]; dataRow[3] = csvdata[3]; dataRow[4] = csvdata[4]; dataRow[5] = csvdata[5]; dataRow[6] = csvdata[6]; dt.Rows.Add(dataRow);//将新行添加到dt中 }
(4)完成數據讀取之後使用SqlBulkCopy批量将内存中的dt數據複制到數據庫對應表中
SqlBulkCopy sqlBulk = new SqlBulkCopy(conn) { DestinationTableName = "temp", NotifyAfter = dt.Rows.Count }; sqlBulk.WriteToServer(dt); sqlBulk.Close();
以上給出C# Win Form讀取CSV并寫入數據庫的基本操作與方法,希望對初學者有一定幫助,如需獲取完整實現代碼請私信作者。如需閱讀往期文章請點擊鍊接:
本頭條号長期關注于青少年編程資訊分享;編程課程、素材、代碼分享及青少年編程培訓。如果您對以上方面有興趣,可關注該頭條号,如有編程學習問題可以聯系作者,共同探讨。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!