SqlBulkCopyColumnMappingCollection Klass

Definition

SqlBulkCopyColumnMapping Samling objekt som ärver från 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
Arv
SqlBulkCopyColumnMappingCollection

Exempel

I följande exempel kopieras data från en källtabell i AdventureWorks-exempeldatabasen till en måltabell i samma databas. Även om antalet kolumner i målet matchar antalet kolumner i källan matchar inte kolumnnamnen och ordningspositionerna. SqlBulkCopyColumnMapping läggs till SqlBulkCopyColumnMappingCollection för objektet för SqlBulkCopy att skapa en kolumnkarta för masskopian.

Important

Det här exemplet körs inte om du inte har skapat arbetstabellerna enligt beskrivningen i Inställning för masskopieringsexempel. Den här koden tillhandahålls för att demonstrera syntaxen för att endast använda SqlBulkCopy . Om käll- och måltabellerna finns i samma SQL Server instans är det enklare och snabbare att använda en Transact-SQL INSERT ... SELECT-instruktion för att kopiera data.

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

Kommentarer

Kolumnmappningar definierar mappningen mellan datakällan och måltabellen.

Om mappningar inte har definierats , dvs ColumnMappings . samlingen är tom, mappas kolumnerna implicit baserat på ordningstalet. För att detta ska fungera måste käll- och målscheman matcha. Om de inte gör det, kastas en InvalidOperationException .

Om samlingen ColumnMappings inte är tom måste inte alla kolumner som finns i datakällan anges. De som inte mappas av samlingen ignoreras.

Du kan referera till käll- och målkolumner med antingen namn eller ordningstal. Du kan blanda kolumnreferenser efter namn och ordning i samma mappningssamling.

Egenskaper

Name Description
Capacity

Hämtar eller anger antalet element som CollectionBase kan innehålla.

(Ärvd från CollectionBase)
Count

Hämtar antalet element som finns i instansen CollectionBase . Den här egenskapen kan inte åsidosättas.

(Ärvd från CollectionBase)
InnerList

Hämtar en ArrayList lista med element i instansen CollectionBase .

(Ärvd från CollectionBase)
Item[Int32]

Hämtar objektet SqlBulkCopyColumnMapping vid det angivna indexet.

List

Hämtar en IList lista med element i instansen CollectionBase .

(Ärvd från CollectionBase)

Metoder

Name Description
Add(Int32, Int32)

Skapar en ny SqlBulkCopyColumnMapping och lägger till den i samlingen med hjälp av ordningstal för att ange både käll- och målkolumner.

Add(Int32, String)

Skapar en ny SqlBulkCopyColumnMapping och lägger till den i samlingen med hjälp av en ordningstal för källkolumnen och en sträng för målkolumnen.

Add(SqlBulkCopyColumnMapping)

Lägger till den angivna mappningen i SqlBulkCopyColumnMappingCollection.

Add(String, Int32)

Skapar en ny SqlBulkCopyColumnMapping och lägger till den i samlingen med ett kolumnnamn för att beskriva källkolumnen och en ordningstal för att ange målkolumnen.

Add(String, String)

Skapar en ny SqlBulkCopyColumnMapping och lägger till den i samlingen med kolumnnamn för att ange både käll- och målkolumner.

Clear()

Rensar innehållet i samlingen.

Contains(SqlBulkCopyColumnMapping)

Hämtar ett värde som anger om ett angivet SqlBulkCopyColumnMapping objekt finns i samlingen.

CopyTo(SqlBulkCopyColumnMapping[], Int32)

Kopierar elementen i SqlBulkCopyColumnMappingCollection till en matris med SqlBulkCopyColumnMapping objekt, med början vid ett visst index.

Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetEnumerator()

Returnerar en uppräkning som itererar genom instansen CollectionBase .

(Ärvd från CollectionBase)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IndexOf(SqlBulkCopyColumnMapping)

Hämtar indexet för det angivna SqlBulkCopyColumnMapping objektet.

Insert(Int32, SqlBulkCopyColumnMapping)

Infoga en ny SqlBulkCopyColumnMapping i det angivna indexet.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
OnClear()

Utför ytterligare anpassade processer när du rensar innehållet i instansen CollectionBase .

(Ärvd från CollectionBase)
OnClearComplete()

Utför ytterligare anpassade processer när innehållet i instansen har rensats CollectionBase .

(Ärvd från CollectionBase)
OnInsert(Int32, Object)

Utför ytterligare anpassade processer innan du infogar ett nytt element i instansen CollectionBase .

(Ärvd från CollectionBase)
OnInsertComplete(Int32, Object)

Utför ytterligare anpassade processer när du har infogat ett nytt element i instansen CollectionBase .

(Ärvd från CollectionBase)
OnRemove(Int32, Object)

Utför ytterligare anpassade processer när du tar bort ett element från instansen CollectionBase .

(Ärvd från CollectionBase)
OnRemoveComplete(Int32, Object)

Utför ytterligare anpassade processer när du har tagit bort ett element från instansen CollectionBase .

(Ärvd från CollectionBase)
OnSet(Int32, Object, Object)

Utför ytterligare anpassade processer innan du anger ett värde i instansen CollectionBase .

(Ärvd från CollectionBase)
OnSetComplete(Int32, Object, Object)

Utför ytterligare anpassade processer när du har angett ett värde i instansen CollectionBase .

(Ärvd från CollectionBase)
OnValidate(Object)

Utför ytterligare anpassade processer när du verifierar ett värde.

(Ärvd från CollectionBase)
Remove(SqlBulkCopyColumnMapping)

Tar bort det angivna SqlBulkCopyColumnMapping elementet SqlBulkCopyColumnMappingCollectionfrån .

RemoveAt(Int32)

Tar bort mappningen vid det angivna indexet från samlingen.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)

Explicita gränssnittsimplementeringar

Name Description
ICollection.CopyTo(Array, Int32)

Kopierar hela CollectionBase till en kompatibel endimensionell Array, med början vid det angivna indexet för målmatrisen.

(Ärvd från CollectionBase)
ICollection.IsSynchronized

Hämtar ett värde som anger om åtkomsten CollectionBase till är synkroniserad (trådsäker).

(Ärvd från CollectionBase)
ICollection.SyncRoot

Hämtar ett objekt som kan användas för att synkronisera åtkomsten CollectionBasetill .

(Ärvd från CollectionBase)
IList.Add(Object)

Lägger till ett objekt i slutet av CollectionBase.

(Ärvd från CollectionBase)
IList.Contains(Object)

Avgör om innehåller CollectionBase ett specifikt element.

(Ärvd från CollectionBase)
IList.IndexOf(Object)

Söker efter den angivna Object och returnerar det nollbaserade indexet för den första förekomsten i hela CollectionBase.

(Ärvd från CollectionBase)
IList.Insert(Int32, Object)

Infogar ett element i CollectionBase det angivna indexet.

(Ärvd från CollectionBase)
IList.IsFixedSize

Hämtar ett värde som anger om har CollectionBase en fast storlek.

(Ärvd från CollectionBase)
IList.IsReadOnly

Hämtar ett värde som anger om är CollectionBase skrivskyddat.

(Ärvd från CollectionBase)
IList.Item[Int32]

Hämtar eller anger elementet vid det angivna indexet.

(Ärvd från CollectionBase)
IList.Remove(Object)

Tar bort den första förekomsten av ett specifikt objekt från CollectionBase.

(Ärvd från CollectionBase)

Tilläggsmetoder

Name Description
AsParallel(IEnumerable)

Möjliggör parallellisering av en fråga.

AsQueryable(IEnumerable)

Konverterar en IEnumerable till en IQueryable.

Cast<TResult>(IEnumerable)

Omvandlar elementen i en IEnumerable till den angivna typen.

OfType<TResult>(IEnumerable)

Filtrerar elementen i en IEnumerable baserat på en angiven typ.

Gäller för

Se även