sql >> Database >  >> RDS >> Sqlserver

Hele DataTable in één keer in de database invoegen in plaats van rij voor rij?

Ik ontdekte dat SqlBulkCopy een gemakkelijke manier is om dit te doen en dat er geen opgeslagen procedure in SQL Server hoeft te worden geschreven.

Hier is een voorbeeld van hoe ik het heb geïmplementeerd:

// 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. Een multi-datacenterconfiguratie voor PostgreSQL implementeren - deel twee

  2. Load Balancers vergelijken voor PostgreSQL

  3. Hoe importeer ik een Excel-bestand in SQL Server?

  4. Hoe kopieer je een record in een SQL-tabel, maar verwissel je de unieke id van de nieuwe rij?