Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static void BulkInsert(String TableName, DataTable Table, List<SearchField> searchFields, String ConnectionString)
- {
- using (SqlConnection DatabaseConnection = new SqlConnection(ConnectionString))
- {
- using (SqlCommand DatabaseCommand = new SqlCommand("", DatabaseConnection))
- {
- DatabaseConnection.Open();
- DatabaseCommand.CommandText = $"SELECT * INTO #TEMP_UPLOAD FROM \"{TableName}\"";
- DatabaseCommand.ExecuteNonQuery();
- DatabaseCommand.CommandText = "DELETE FROM #TEMP_UPLOAD";
- DatabaseCommand.ExecuteNonQuery();
- using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(DatabaseConnection))
- {
- sqlBulkCopy.BulkCopyTimeout = 0;
- sqlBulkCopy.DestinationTableName = $"#TEMP_UPLOAD";
- foreach (DataColumn DC in Table.Columns)
- sqlBulkCopy.ColumnMappings.Add(DC.ColumnName, DC.ColumnName);
- sqlBulkCopy.WriteToServer(Table);
- sqlBulkCopy.Close();
- }
- String ColumnNames = null;
- foreach (DataColumn dataColumn in Table.Columns)
- ColumnNames += $"{dataColumn.ColumnName},";
- ColumnNames = ColumnNames.Substring(0, ColumnNames.Length - 1);
- String selectColumns = null;
- foreach (DataColumn column in Table.Columns)
- selectColumns += $"A.{column.ColumnName},";
- selectColumns = selectColumns.Substring(0, selectColumns.Length - 1);
- String Query = null;
- foreach (SearchField Column in searchFields)
- if (Query == null)
- Query += $"ISNULL(CONVERT(VARCHAR,A.{Column.FieldName}), 'NULL') = ISNULL(CONVERT(VARCHAR,B.{Column.FieldName}), 'NULL')";
- else
- Query += $" AND ISNULL(CONVERT(VARCHAR,A.{Column.FieldName}), 'NULL') = ISNULL(CONVERT(VARCHAR,B.{Column.FieldName}), 'NULL')";
- DatabaseCommand.CommandTimeout = 3000;
- 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();
- DatabaseCommand.Dispose();
- DatabaseConnection.Close();
- }
- }
- GC.Collect();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement