Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Wstawić całą tabelę DataTable do bazy danych naraz zamiast wiersz po wierszu?

Odkryłem, że SqlBulkCopy jest łatwym sposobem na zrobienie tego i nie wymaga napisania procedury składowanej w SQL Server.

Oto przykład, jak to zaimplementowałem:

// take note of SqlBulkCopyOptions.KeepIdentity , you may or may not want to use this for your situation.  

using (var bulkCopy = new SqlBulkCopy(_connection.ConnectionString, SqlBulkCopyOptions.KeepIdentity))
{
      // my DataTable column names match my SQL Column names, so I simply made this loop. However if your column names don't match, just pass in which datatable name matches the SQL column name in Column Mappings
      foreach (DataColumn col in table.Columns)
      {
          bulkCopy.ColumnMappings.Add(col.ColumnName, col.ColumnName);
      }

      bulkCopy.BulkCopyTimeout = 600;
      bulkCopy.DestinationTableName = destinationTableName;
      bulkCopy.WriteToServer(table);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dynamiczna tabela przestawna w SQL Server

  2. Przyspieszone odzyskiwanie baz danych w programie SQL Server 2019

  3. Jak działa funkcja SPACE() w SQL Server (T-SQL)

  4. Jak naprawić konflikt sortowania w zapytaniu SQL Server?

  5. Jak zaimportować duży plik MS SQL .sql?