Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

The given ColumnMapping does not match up with any column in the source or destination

Tags:

c#

sqlbulkcopy

I dont know why I am getting the above exception, please someone look at it ....

DataTable DataTable_Time = new DataTable("Star_Schema__Dimension_Time");  DataColumn Sowing_Day = new DataColumn(); Sowing_Day.ColumnName = "Sowing_Day";  DataColumn Sowing_Month= new DataColumn(); Sowing_Month.ColumnName = "Sowing_Month";        DataColumn Sowing_Year = new DataColumn(); Sowing_Year.ColumnName = "Sowing_Year";  DataColumn Visit_Day= new DataColumn(); Visit_Day.ColumnName = "Visit_Day";  DataColumn Visit_Month = new DataColumn(); Visit_Month.ColumnName = "Visit_Month";  DataColumn Visit_Year = new DataColumn(); Visit_Year.ColumnName = "Visit_Year";  DataColumn Pesticide_spray_day = new DataColumn(); Pesticide_spray_day.ColumnName = "Pesticide_spray_day";  DataColumn Pesticide_spray_Month = new DataColumn(); Pesticide_spray_Month.ColumnName = "Pesticide_spray_Month";  DataColumn Pesticide_spray_Year = new DataColumn(); Pesticide_spray_Year.ColumnName = "Pesticide_spray_Year";  DataTable_Time.Columns.Add(Pesticide_spray_Year); DataTable_Time.Columns.Add(Sowing_Day); DataTable_Time.Columns.Add(Sowing_Month); DataTable_Time.Columns.Add(Sowing_Year); DataTable_Time.Columns.Add(Visit_Day); DataTable_Time.Columns.Add(Visit_Month); DataTable_Time.Columns.Add(Visit_Year); DataTable_Time.Columns.Add(Pesticide_spray_day); DataTable_Time.Columns.Add(Pesticide_spray_Month);  adapter.SelectCommand = new SqlCommand(     "SELECT SowingDate,VisitDate,PesticideSprayDate " +     "FROM Transformed_Table " +      "group by SowingDate,VisitDate,PesticideSprayDate", con);  adapter.SelectCommand.CommandTimeout = 1000;  adapter.Fill(DataSet_DistinctRows, "Star_Schema__Dimension_Time");  DataTable_DistinctRows = DataSet_DistinctRows.Tables["Star_Schema__Dimension_Time"];  int row_number = 0; int i = 3;  foreach(DataRow row  in DataTable_DistinctRows.Rows) {     DataRow flatTableRow = DataTable_Time.NewRow();      string[] Sarray= Regex.Split(row[0].ToString()," ",RegexOptions.IgnoreCase);     string[] finalsplit = Regex.Split(Sarray[0], "/", RegexOptions.IgnoreCase);     string[] Sarray1 = Regex.Split(row[1].ToString(), " ", RegexOptions.IgnoreCase);     string[] finalsplit2 = Regex.Split(Sarray1[0], "/", RegexOptions.IgnoreCase);     string[] Sarray2= Regex.Split(row[2].ToString(), " ", RegexOptions.IgnoreCase);     string[] finalsplit3 = Regex.Split(Sarray2[0], "/", RegexOptions.IgnoreCase);                   flatTableRow["Sowing_Day"] = int.Parse(finalsplit[0]);     flatTableRow["Sowing_Month"] = int.Parse(finalsplit[0]);     flatTableRow["Sowing_Year"] = int.Parse(finalsplit[0]);      flatTableRow["Visit_Day"] = int.Parse(finalsplit2[0]);     flatTableRow["Visit_Month"] = int.Parse(finalsplit2[0]);     flatTableRow["Visit_Year"] = int.Parse(finalsplit2[0]);      flatTableRow["Pesticide_spray_day"] = int.Parse(finalsplit3[0]);     flatTableRow["Pesticide_spray_Month"] = int.Parse(finalsplit3[0]);     flatTableRow["Pesticide_spray_Year"] = int.Parse(finalsplit3[0]);      DataTable_Time.Rows.Add(flatTableRow);      i++; }  con.Open();  using (SqlBulkCopy s = new SqlBulkCopy(con)) {     s.DestinationTableName = DataTable_Time.TableName;      foreach (var column in DataTable_Time.Columns)         s.ColumnMappings.Add(column.ToString(), column.ToString());      s.BulkCopyTimeout = 500;      s.WriteToServer(DataTable_Time); } 
like image 763
user1056466 Avatar asked Nov 26 '13 21:11

user1056466


People also ask

Is SqlBulkCopy case sensitive?

Please see Column mappings in SqlBulkCopy are case sensitive.

What is SqlBulkCopy in C#?

The SqlBulkCopy class lets you write managed code solutions that provide similar functionality. There are other ways to load data into a SQL Server table (INSERT statements, for example), but SqlBulkCopy offers a significant performance advantage over them.


1 Answers

It's important to keep in mind sqlBulkCopy columns are case sensitive for some versions of SQL. I think MSSQL 2005. Hope it helps

like image 89
Tonto Avatar answered Sep 22 '22 05:09

Tonto