SqlBulkCopyColumnMappingCollection Clase

Definición

Colección de SqlBulkCopyColumnMapping objetos que hereda de 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
Herencia
SqlBulkCopyColumnMappingCollection

Ejemplos

En el ejemplo siguiente se copian de forma masiva datos de una tabla de origen en la base de datos de ejemplo AdventureWorks a una tabla de destino en la misma base de datos. Aunque el número de columnas del destino coincide con el número de columnas del origen, los nombres de columna y las posiciones ordinales no coinciden. SqlBulkCopyColumnMappingse agregan al objeto para que el SqlBulkCopy objeto cree un mapa SqlBulkCopyColumnMappingCollection de columnas para la copia masiva.

Importante

Este ejemplo no se ejecutará a menos que haya creado las tablas de trabajo como se describe en Configuración de ejemplo de copia masiva. Este código se proporciona para mostrar la sintaxis para usar SqlBulkCopy. Si las tablas de origen y destino están en la misma instancia de SQL Server, es más fácil y rápido usar una instrucción Transact-SQL INSERT ... SELECT para copiar los datos.

using System.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;";
    }
}
Imports System.Data.SqlClient

Module Module1
    Sub Main()
        Dim connectionString As String = GetConnectionString()

        ' Open a connection to the AdventureWorks database.
        Using sourceConnection As SqlConnection = _
           New SqlConnection(connectionString)
            sourceConnection.Open()

            ' Perform an initial count on the destination table.
            Dim commandRowCount As New SqlCommand( _
            "SELECT COUNT(*) FROM dbo.BulkCopyDemoDifferentColumns;", _
                sourceConnection)
            Dim countStart As Long = _
               System.Convert.ToInt32(commandRowCount.ExecuteScalar())
            Console.WriteLine("Starting row count = {0}", countStart)

            ' Get data from the source table as a SqlDataReader.
            Dim commandSourceData As SqlCommand = New SqlCommand( _
               "SELECT ProductID, Name, ProductNumber " & _
               "FROM Production.Product;", sourceConnection)
            Dim reader As SqlDataReader = commandSourceData.ExecuteReader

            ' Set up the bulk copy object.
            Using bulkCopy As SqlBulkCopy = 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 ex As Exception
                    Console.WriteLine(ex.Message)

                Finally
                    ' Close the SqlDataReader. The SqlBulkCopy
                    ' object is automatically closed at the end
                    ' of the Using block.
                    reader.Close()
                End Try
            End Using

            ' Perform a final count on the destination table
            ' to see how many rows were added.
            Dim countEnd As Long = _
                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()
        End Using
    End Sub

    Private Function GetConnectionString() As String
        ' 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;"
    End Function
End Module

Comentarios

Las asignaciones de columna definen la asignación entre el origen de datos y la tabla de destino.

Si no se definen asignaciones ( es decir, la ColumnMappings colección está vacía), las columnas se asignan implícitamente en función de la posición ordinal. Para que esto funcione, los esquemas de origen y destino deben coincidir. Si no lo hacen, se produce una InvalidOperationException excepción .

Si la ColumnMappings colección no está vacía, no todas las columnas presentes en el origen de datos deben especificarse. Los no asignados por la colección se omiten.

Puede hacer referencia a las columnas de origen y de destino tanto por nombre como por ordinal. Puede mezclar referencias de columna por nombre y por ordinal en la misma colección de asignaciones.

Propiedades

Nombre Description
Capacity

Obtiene o establece el número de elementos que CollectionBase puede contener.

(Heredado de CollectionBase)
Count

Obtiene el número de elementos contenidos en la CollectionBase instancia. Esta propiedad no se puede invalidar.

(Heredado de CollectionBase)
InnerList

Obtiene un ArrayList objeto que contiene la lista de elementos de la CollectionBase instancia de .

(Heredado de CollectionBase)
Item[Int32]

Obtiene el objeto SqlBulkCopyColumnMapping en el índice especificado.

List

Obtiene un IList objeto que contiene la lista de elementos de la CollectionBase instancia de .

(Heredado de CollectionBase)

Métodos

Nombre Description
Add(Int32, Int32)

Crea un nuevo SqlBulkCopyColumnMapping y lo agrega a la colección, mediante ordinales para especificar columnas de origen y de destino.

Add(Int32, String)

Crea un nuevo SqlBulkCopyColumnMapping y lo agrega a la colección mediante un ordinal para la columna de origen y una cadena para la columna de destino.

Add(SqlBulkCopyColumnMapping)

Agrega la asignación especificada a .SqlBulkCopyColumnMappingCollection

Add(String, Int32)

Crea un nuevo SqlBulkCopyColumnMapping y lo agrega a la colección, utilizando un nombre de columna para describir la columna de origen y un ordinal para especificar la columna de destino.

Add(String, String)

Crea una nueva SqlBulkCopyColumnMapping y la agrega a la colección mediante nombres de columna para especificar columnas de origen y de destino.

Clear()

Borra el contenido de la colección.

Contains(SqlBulkCopyColumnMapping)

Obtiene un valor que indica si existe un objeto especificado SqlBulkCopyColumnMapping en la colección.

CopyTo(SqlBulkCopyColumnMapping[], Int32)

Copia los elementos de en SqlBulkCopyColumnMappingCollection una matriz de SqlBulkCopyColumnMapping elementos, empezando por un índice determinado.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetEnumerator()

Devuelve un enumerador que recorre en iteración la CollectionBase instancia de .

(Heredado de CollectionBase)
GetHashCode()

Actúa como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
IndexOf(SqlBulkCopyColumnMapping)

Obtiene el índice del objeto SqlBulkCopyColumnMapping especificado.

Insert(Int32, SqlBulkCopyColumnMapping)

Inserte un nuevo SqlBulkCopyColumnMapping en el índice especificado.

MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
OnClear()

Realiza procesos personalizados adicionales al borrar el contenido de la CollectionBase instancia.

(Heredado de CollectionBase)
OnClearComplete()

Realiza procesos personalizados adicionales después de borrar el contenido de la CollectionBase instancia.

(Heredado de CollectionBase)
OnInsert(Int32, Object)

Realiza procesos personalizados adicionales antes de insertar un nuevo elemento en la CollectionBase instancia.

(Heredado de CollectionBase)
OnInsertComplete(Int32, Object)

Realiza procesos personalizados adicionales después de insertar un nuevo elemento en la CollectionBase instancia.

(Heredado de CollectionBase)
OnRemove(Int32, Object)

Realiza procesos personalizados adicionales al quitar un elemento de la CollectionBase instancia.

(Heredado de CollectionBase)
OnRemoveComplete(Int32, Object)

Realiza procesos personalizados adicionales después de quitar un elemento de la CollectionBase instancia.

(Heredado de CollectionBase)
OnSet(Int32, Object, Object)

Realiza procesos personalizados adicionales antes de establecer un valor en la CollectionBase instancia de .

(Heredado de CollectionBase)
OnSetComplete(Int32, Object, Object)

Realiza procesos personalizados adicionales después de establecer un valor en la CollectionBase instancia de .

(Heredado de CollectionBase)
OnValidate(Object)

Realiza procesos personalizados adicionales al validar un valor.

(Heredado de CollectionBase)
Remove(SqlBulkCopyColumnMapping)

Quita el elemento especificado SqlBulkCopyColumnMapping de .SqlBulkCopyColumnMappingCollection

RemoveAt(Int32)

Quita la asignación en el índice especificado de la colección.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

Nombre Description
ICollection.CopyTo(Array, Int32)

Copia todo en CollectionBase una unidimensional Arraycompatible, empezando por el índice especificado de la matriz de destino.

(Heredado de CollectionBase)
ICollection.IsSynchronized

Obtiene un valor que indica si el acceso a CollectionBase está sincronizado (seguro para subprocesos).

(Heredado de CollectionBase)
ICollection.SyncRoot

Obtiene un objeto que se puede usar para sincronizar el acceso a la CollectionBase.

(Heredado de CollectionBase)
IList.Add(Object)

Agrega un objeto al final de .CollectionBase

(Heredado de CollectionBase)
IList.Contains(Object)

Determina si contiene CollectionBase un elemento específico.

(Heredado de CollectionBase)
IList.IndexOf(Object)

Busca el especificado Object y devuelve el índice de base cero de la primera aparición dentro de todo CollectionBase.

(Heredado de CollectionBase)
IList.Insert(Int32, Object)

Inserta un elemento en en el CollectionBase índice especificado.

(Heredado de CollectionBase)
IList.IsFixedSize

Obtiene un valor que indica si CollectionBase tiene un tamaño fijo.

(Heredado de CollectionBase)
IList.IsReadOnly

Obtiene un valor que indica si el CollectionBase es de solo lectura.

(Heredado de CollectionBase)
IList.Item[Int32]

Obtiene o establece el elemento en el índice especificado.

(Heredado de CollectionBase)
IList.Remove(Object)

Quita la primera aparición de un objeto específico de la CollectionBase.

(Heredado de CollectionBase)

Métodos de extensión

Nombre Description
AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte un IEnumerable en un IQueryable.

Cast<TResult>(IEnumerable)

Convierte los elementos de un IEnumerable al tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de un IEnumerable en función de un tipo especificado.

Se aplica a

Consulte también