Search code examples
c#sqldatatablesqlbulkcopy

Mapping columns in a DataTable to a SQL table with SqlBulkCopy


I would like to know how I can map columns in a database table to the datatable in c# before adding the data to the database.

using (SqlBulkCopy s = new SqlBulkCopy(conn))
{
    s.DestinationTableName = destination;
    s.WriteToServer(Ads_api_ReportData);
}

Solution

  • You probably need some thing like

     public void BatchBulkCopy(DataTable dataTable, string DestinationTbl, int batchSize)
    {
        // Get the DataTable 
        DataTable dtInsertRows = dataTable;
    
        using (SqlBulkCopy sbc = new SqlBulkCopy(connectionString, SqlBulkCopyOptions.KeepIdentity))
        {
            sbc.DestinationTableName = DestinationTbl;
    
            // Number of records to be processed in one go
            sbc.BatchSize = batchSize;
    
            // Add your column mappings here
            sbc.ColumnMappings.Add("field1","field3");
            sbc.ColumnMappings.Add("foo","bar");
    
            // Finally write to server
            sbc.WriteToServer(dtInsertRows);
        }    
    }
    

    Ref: How to use SqlBulkCopyColumnMappingCollection? . .

    Seel also http://www.codeproject.com/Articles/18418/Transferring-Data-Using-SqlBulkCopy