internal void BulkInsert(string dataFile) { using (var csv = new CsvFileReader(dataFile)) { var row = new CsvRow(); var fieldList = new List<string>(); bool firstRow = true; while (csv.ReadRow(row)) { if (firstRow) { fieldList.AddRange(row); firstRow = false; } else { DataRow dataRow = this.dataTable.NewRow(); for (int i = 0; i < fieldList.Count; i++) { dataRow[fieldList[i]] = row[i].Length > 0 ? (object)row[i] : DBNull.Value; } this.dataTable.Rows.Add(dataRow); } if (this.dataTable.Rows.Count >= this.batchSize) { this.dataTable.AcceptChanges(); this.BulkInsertIntoDatabase(); this.dataTable.Rows.Clear(); } } if (this.dataTable.Rows.Count > 0) { this.dataTable.AcceptChanges(); this.BulkInsertIntoDatabase(); this.dataTable.Rows.Clear(); } } }
public void CsvReaderTest_WithValuesNotSetForFewColumns() { using (var reader = new CsvFileReader(new MemoryStream(Encoding.UTF8.GetBytes("1,2,3,4\n1,2,,4")))) { var row = new CsvRow(); Assert.AreEqual(reader.ReadRow(row), true); Assert.AreEqual(4, row.Count); row = new CsvRow(); Assert.AreEqual(reader.ReadRow(row), true); Assert.AreEqual(4, row.Count); } }
public void CsvWriterReaderAccuracyTestShouldHaveAccurateData() { File.Delete("Somefile.csv"); var originalDataList = new List<TestData>(); var data1 = new TestData { Region = "Ealing,\n London", Sales = 10000, DateOpened = new DateTime(2012, 04, 23) }; originalDataList.Add(data1); var data2 = new TestData { Region = "\"\"Glasgow in Scotland\"\"", Sales = 50000, DateOpened = new DateTime(2012, 4, 1, 15, 31, 0) }; originalDataList.Add(data2); var data3 = new TestData { Region = "USA 'Gods own country'", Sales = 40000, DateOpened = new DateTime(2011, 12, 29, 9, 30, 0) }; originalDataList.Add(data3); var exportData = new CsvWriter(); exportData.AddRow(); exportData["Region"] = data1.Region; exportData["Sales"] = Convert.ToString(data1.Sales); exportData["Date Opened"] = Convert.ToString(data1.DateOpened); exportData.AddRow(); exportData["Region"] = data2.Region; exportData["Sales"] = Convert.ToString(data2.Sales); exportData["Date Opened"] = Convert.ToString(data2.DateOpened); exportData.AddRow(); exportData["Region"] = data3.Region; exportData["Sales"] = Convert.ToString(data3.Sales); exportData["Date Opened"] = Convert.ToString(data3.DateOpened); exportData.ExportToFile("Somefile.csv"); bool readingHeader = true; using (var reader = new CsvFileReader("Somefile.csv")) { var row = new CsvRow(); var newDataList = new List<TestData>(); while (reader.ReadRow(row)) { var headersList = new List<string>(); if (readingHeader) { headersList.AddRange(row); headersList.ToArray(); readingHeader = false; } else { var outData = new TestData { Region = row[0], Sales = Convert.ToInt32(row[1]), DateOpened = Convert.ToDateTime(row[2]) }; newDataList.Add(outData); } } var resultData = from newData in newDataList join originalData in originalDataList on newData.Region equals originalData.Region select new { NewData = newData, OriginalData = originalData }; foreach (var data in resultData) { Assert.IsTrue( data.NewData.Sales == data.OriginalData.Sales && data.NewData.Region == data.OriginalData.Region && data.NewData.DateOpened == data.OriginalData.DateOpened); } } }