sql >> Databáze >  >> RDS >> Sqlserver

Vložit celý DataTable do databáze najednou místo řádek po řádku?

Zjistil jsem, že SqlBulkCopy je snadný způsob, jak toho dosáhnout, a nevyžaduje zapsání uložené procedury na SQL Server.

Zde je příklad toho, jak jsem to implementoval:

// 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. COLLATION() Funkce v Oracle

  2. Jak funguje current_time v PostgreSQL

  3. vytvořit tabulku se sekvencí.nextval v oracle

  4. Jak určit automaticky vygenerovaný primární klíč použitý jako cizí klíč pro jinou tabulku