Share via


SqlBulkCopyColumnMappingCollection Classe

Definizione

Raccolta di oggetti SqlBulkCopyColumnMapping che ereditano dall'oggetto CollectionBase.

public ref class SqlBulkCopyColumnMappingCollection sealed : System::Collections::CollectionBase
public sealed class SqlBulkCopyColumnMappingCollection : System.Collections.CollectionBase
type SqlBulkCopyColumnMappingCollection = class
    inherit CollectionBase
Public NotInheritable Class SqlBulkCopyColumnMappingCollection
Inherits CollectionBase
Ereditarietà
SqlBulkCopyColumnMappingCollection

Esempio

L'esempio seguente esegue la copia bulk di dati da una tabella di origine nel database di esempio AdventureWorks a una tabella di destinazione nello stesso database. Anche se il numero di colonne nella destinazione corrisponde al numero di colonne nell'origine, i nomi delle colonne e le posizioni ordinali non corrispondono. SqlBulkCopyColumnMapping vengono aggiunti a SqlBulkCopyColumnMappingCollection per l'oggetto SqlBulkCopy per creare una mappa delle colonne per la copia bulk.

Importante

Questo esempio non verrà eseguito a meno che non siano state create le tabelle di lavoro, come descritto in Installazione dell'esempio di copia bulk. Il codice viene fornito solo per illustrare la sintassi relativa all'uso di SqlBulkCopy. Se le tabelle di origine e di destinazione si trovano nella stessa istanza di SQL Server, è più semplice e veloce usare un'istruzione Transact-SQL INSERT … SELECT per copiare i dati.

using System;
using System.Data;
using Microsoft.Data.SqlClient;

class Program
{
    static void Main()
    {
        string connectionString = GetConnectionString();
        // Open a sourceConnection to the AdventureWorks database.
        using (SqlConnection sourceConnection =
                   new SqlConnection(connectionString))
        {
            sourceConnection.Open();

            // Perform an initial count on the destination table.
            SqlCommand commandRowCount = new SqlCommand(
                "SELECT COUNT(*) FROM " +
                "dbo.BulkCopyDemoDifferentColumns;",
                sourceConnection);
            long countStart = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Starting row count = {0}", countStart);

            // Get data from the source table as a SqlDataReader.
            SqlCommand commandSourceData = new SqlCommand(
                "SELECT ProductID, Name, " +
                "ProductNumber " +
                "FROM Production.Product;", sourceConnection);
            SqlDataReader reader =
                commandSourceData.ExecuteReader();

            // Set up the bulk copy object. 
            using (SqlBulkCopy bulkCopy =
                       new SqlBulkCopy(connectionString))
            {
                bulkCopy.DestinationTableName =
                    "dbo.BulkCopyDemoDifferentColumns";

                // The column order in the source doesn't match the order 
                // in the destination, so ColumnMappings must be defined.
                bulkCopy.ColumnMappings.Add("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add("Name", "ProdName");
                bulkCopy.ColumnMappings.Add("ProductNumber", "ProdNum");

                // Write from the source to the destination.
                try
                {
                    bulkCopy.WriteToServer(reader);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
                finally
                {
                    // Close the SqlDataReader. The SqlBulkCopy
                    // object is automatically closed at the end
                    // of the using block.
                    reader.Close();
                }
            }

            // Perform a final count on the destination 
            // table to see how many rows were added.
            long countEnd = System.Convert.ToInt32(
                commandRowCount.ExecuteScalar());
            Console.WriteLine("Ending row count = {0}", countEnd);
            Console.WriteLine("{0} rows were added.", countEnd - countStart);
            Console.WriteLine("Press Enter to finish.");
            Console.ReadLine();
        }
    }

    private static string GetConnectionString()
    // To avoid storing the sourceConnection string in your code, 
    // you can retrieve it from a configuration file. 
    {
        return "Data Source=(local); " +
            " Integrated Security=true;" +
            "Initial Catalog=AdventureWorks;";
    }
}

Commenti

I mapping delle colonne definiscono il mapping tra l'origine dati e la tabella di destinazione.

Se i mapping non sono definiti, ovvero la ColumnMappings raccolta è vuota, le colonne vengono mappate in modo implicito in base alla posizione ordinale. Per il corretto funzionamento, gli schemi di origine e di destinazione devono corrispondere. In caso contrario, viene generata un'eccezione InvalidOperationException .

Se la ColumnMappings raccolta non è vuota, non è necessario specificare tutte le colonne presenti nell'origine dati. Quelli non mappati dalla raccolta vengono ignorati.

È possibile fare riferimento alle colonne di origine e di destinazione in base al nome o alla posizione ordinale. È possibile combinare riferimenti per nome e colonna ordinale nella stessa raccolta di mapping.

Proprietà

Item[Int32]

Ottiene l'oggetto SqlBulkCopyColumnMapping in corrispondenza dell'indice specificato.

Metodi

Add(Int32, Int32)

Crea un nuovo oggetto SqlBulkCopyColumnMapping e lo aggiunge all'insieme, utilizzando gli ordinali per specificare le colonne di origine e destinazione.

Add(Int32, String)

Crea un nuovo oggetto SqlBulkCopyColumnMapping e lo aggiunge all'insieme, utilizzando un ordinale per specificare la colonna di origine e una stringa per la colonna di destinazione.

Add(SqlBulkCopyColumnMapping)

Aggiunge il mapping specificato all'insieme SqlBulkCopyColumnMappingCollection.

Add(String, Int32)

Crea un nuovo oggetto SqlBulkCopyColumnMapping e lo aggiunge all'insieme, utilizzando un nome di colonna per descrivere la colonna di origine e un ordinale per specificare la colonna di destinazione.

Add(String, String)

Crea un nuovo oggetto SqlBulkCopyColumnMapping e lo aggiunge all'insieme, utilizzando i nomi di colonna per specificare le colonne di origine e destinazione.

Clear()

Cancella il contenuto della raccolta.

Contains(SqlBulkCopyColumnMapping)

Ottiene un valore che indica se nell'insieme esiste l'oggetto SqlBulkCopyColumnMapping specificato.

CopyTo(SqlBulkCopyColumnMapping[], Int32)

Copia gli elementi dell'insieme SqlBulkCopyColumnMappingCollection in una matrice di elementi SqlBulkCopyColumnMapping, cominciando da un particolare indice.

IndexOf(SqlBulkCopyColumnMapping)

Ottiene l'indice dell'oggetto SqlBulkCopyColumnMapping specificato.

Insert(Int32, SqlBulkCopyColumnMapping)

Inserisce un nuovo oggetto SqlBulkCopyColumnMapping in corrispondenza dell'indice specificato.

Remove(SqlBulkCopyColumnMapping)

Rimuove l'elemento SqlBulkCopyColumnMapping specificato dall'oggetto SqlBulkCopyColumnMappingCollection.

RemoveAt(Int32)

Rimuove il mapping dall'insieme in corrispondenza dell'indice specificato.

Si applica a