Associazione di colonne in un DataTable a una tabella SQL con SqlBulkCopy

c# datatable sql sqlbulkcopy

Domanda

Mi piacerebbe sapere come posso mappare le colonne in una tabella di database al datatable in c # prima di aggiungere i dati al database.

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

Risposta accettata

Probabilmente hai bisogno di qualcosa del genere

 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: Come usare SqlBulkCopyColumnMappingCollection? . .

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


Risposta popolare

Potrebbe essere utile sapere che se le colonne nella query di origine (o tabella) e la tabella di destinazione hanno lo stesso nome e sono nello stesso ordine , allora non è necessario scrivere esplicitamente i mapping , perché SqlBulkCopy creerà una mappatura predefinita con questo ordine predefinito.



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché