Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2020
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.06 KB | None | 0 0
  1. private static void BulkInsert(String TableName, DataTable Table, List<SearchField> searchFields, String ConnectionString)
  2.                 {
  3.                     using (SqlConnection DatabaseConnection = new SqlConnection(ConnectionString))
  4.                     {
  5.                         using (SqlCommand DatabaseCommand = new SqlCommand("", DatabaseConnection))
  6.                         {
  7.                             DatabaseConnection.Open();
  8.                             DatabaseCommand.CommandText = $"SELECT * INTO #TEMP_UPLOAD FROM \"{TableName}\"";
  9.                             DatabaseCommand.ExecuteNonQuery();
  10.  
  11.                             DatabaseCommand.CommandText = "DELETE FROM #TEMP_UPLOAD";
  12.                             DatabaseCommand.ExecuteNonQuery();
  13.  
  14.                             using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(DatabaseConnection))
  15.                             {
  16.                                 sqlBulkCopy.BulkCopyTimeout = 0;
  17.                                 sqlBulkCopy.DestinationTableName = $"#TEMP_UPLOAD";
  18.                                 foreach (DataColumn DC in Table.Columns)
  19.                                     sqlBulkCopy.ColumnMappings.Add(DC.ColumnName, DC.ColumnName);
  20.                                 sqlBulkCopy.WriteToServer(Table);
  21.                                 sqlBulkCopy.Close();
  22.                             }
  23.  
  24.                             String ColumnNames = null;
  25.                             foreach (DataColumn dataColumn in Table.Columns)
  26.                                 ColumnNames += $"{dataColumn.ColumnName},";
  27.                             ColumnNames = ColumnNames.Substring(0, ColumnNames.Length - 1);
  28.  
  29.                             String selectColumns = null;
  30.                             foreach (DataColumn column in Table.Columns)
  31.                                 selectColumns += $"A.{column.ColumnName},";
  32.                             selectColumns = selectColumns.Substring(0, selectColumns.Length - 1);
  33.  
  34.                             String Query = null;
  35.                             foreach (SearchField Column in searchFields)
  36.                                 if (Query == null)
  37.                                     Query += $"ISNULL(CONVERT(VARCHAR,A.{Column.FieldName}), 'NULL') = ISNULL(CONVERT(VARCHAR,B.{Column.FieldName}), 'NULL')";
  38.                                 else
  39.                                     Query += $" AND ISNULL(CONVERT(VARCHAR,A.{Column.FieldName}), 'NULL') = ISNULL(CONVERT(VARCHAR,B.{Column.FieldName}), 'NULL')";
  40.  
  41.  
  42.                             DatabaseCommand.CommandTimeout = 3000;
  43.                             DatabaseCommand.CommandText = $"INSERT INTO \"{TableName}\" ({ColumnNames}) SELECT {selectColumns} FROM #TEMP_UPLOAD A WHERE NOT EXISTS (SELECT * FROM \"{TableName}\" B WHERE {Query}); DROP TABLE #TEMP_UPLOAD";                            DatabaseCommand.ExecuteNonQuery();
  44.                             DatabaseCommand.Dispose();
  45.  
  46.                             DatabaseConnection.Close();
  47.                         }
  48.                     }
  49.  
  50.                     GC.Collect();
  51.                 }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement