SqlBulkCopyColumnMapping SqlBulkCopyColumnMapping SqlBulkCopyColumnMapping SqlBulkCopyColumnMapping Class

Definition

Definiert die Zuordnung zwischen einer Spalte in der Datenquelle einer SqlBulkCopy-Instanz und einer Spalte in der Zieltabelle der Instanz.Defines the mapping between a column in a SqlBulkCopy instance's data source and a column in the instance's destination table.

public ref class SqlBulkCopyColumnMapping sealed
public sealed class SqlBulkCopyColumnMapping
type SqlBulkCopyColumnMapping = class
Public NotInheritable Class SqlBulkCopyColumnMapping
Vererbung
SqlBulkCopyColumnMappingSqlBulkCopyColumnMappingSqlBulkCopyColumnMappingSqlBulkCopyColumnMapping

Beispiele

Im folgenden Beispiel werden Daten aus einer Quell Tabelle in der AdventureWorks -Beispieldatenbank in eine Ziel Tabelle in derselben Datenbank kopiert.The following example bulk copies data from a source table in the AdventureWorks sample database to a destination table in the same database. Obwohl die Anzahl der Spalten im Ziel mit der Anzahl der Spalten in der Quelle übereinstimmt und jede Ziel Spalte dieselbe Ordinalposition wie die zugehörige Quell Spalte hat, stimmen die Spaltennamen nicht überein.Although the number of columns in the destination matches the number of columns in the source, and each destination column is in the same ordinal position as its corresponding source column, the column names do not match. SqlBulkCopyColumnMapping-Objekte werden verwendet, um eine Spalten Zuordnung für den Massen Kopiervorgang zu erstellen.SqlBulkCopyColumnMapping objects are used to create a column map for the bulk copy.

Wichtig

Dieses Beispiel wird nur dann ausgeführt, wenn Sie die Arbeits Tabellen erstellt haben, wie unter Beispiel für Massen KopierVorgänge beschrieben.This sample will not run unless you have created the work tables as described in Bulk Copy Example Setup. Dieser Code wird bereitgestellt, um die Syntax nur für die Verwendung von SqlBulkCopy zu veranschaulichen.This code is provided to demonstrate the syntax for using SqlBulkCopy only. Wenn sich die Quell-und Ziel Tabelle in derselben SQL Server Instanz befinden, ist es einfacher und schneller, eine Transact-SQL INSERT … SELECT -Anweisung zu verwenden, um die Daten zu kopieren.If the source and destination tables are in the same SQL Server instance, it is easier and faster to use a Transact-SQL INSERT … SELECT statement to copy the 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";

                // Set up the column mappings by name.
                SqlBulkCopyColumnMapping mapID =
                    new SqlBulkCopyColumnMapping("ProductID", "ProdID");
                bulkCopy.ColumnMappings.Add(mapID);

                SqlBulkCopyColumnMapping mapName =
                    new SqlBulkCopyColumnMapping("Name", "ProdName");
                bulkCopy.ColumnMappings.Add(mapName);

                SqlBulkCopyColumnMapping mapMumber =
                    new SqlBulkCopyColumnMapping("ProductNumber", "ProdNum");
                bulkCopy.ColumnMappings.Add(mapMumber);

                // 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"

                ' Set up the column mappings by name.
                Dim mapID As New _
                  SqlBulkCopyColumnMapping("ProductID", "ProdID")
                bulkCopy.ColumnMappings.Add(mapID)

                Dim mapName As New _
                 SqlBulkCopyColumnMapping("Name", "ProdName")
                bulkCopy.ColumnMappings.Add(mapName)

                Dim mapMumber As New _
                 SqlBulkCopyColumnMapping("ProductNumber", "ProdNum")
                bulkCopy.ColumnMappings.Add(mapMumber)

                ' 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

Hinweise

Spalten Zuordnungen definieren die Zuordnung zwischen der Datenquelle und der Ziel Tabelle.Column mappings define the mapping between data source and the target table.

Wenn keine Zuordnungen definiert sind, d. h. ColumnMappings die Auflistung ist leer, werden die Spalten implizit basierend auf der Ordinalposition zugeordnet.If mappings are not defined - that is, the ColumnMappings collection is empty - the columns are mapped implicitly based on ordinal position. Damit dies funktioniert, müssen Quell-und Ziel Schemas mit identisch sein.For this to work, source and target schemas must match. Wenn dies nicht der Fall ist InvalidOperationException , wird eine ausgelöst.If they do not, an InvalidOperationException will be thrown.

Wenn die ColumnMappings Auflistung nicht leer ist, muss nicht jede Spalte in der Datenquelle angegeben werden.If the ColumnMappings collection is not empty, not every column present in the data source has to be specified. Die, die nicht von der Auflistung zugeordnet werden, werden ignoriert.Those not mapped by the collection are ignored.

Sie können anhand des Namens oder der Ordinalzahl auf Quell-und Ziel Spalten verweisen.You can refer to source and target columns by either name or ordinal. Sie können auch nach Namen und Spalten Verweise mit Ordnungszahl in derselben Zuordnungs Auflistung kombinieren.You can also mix by-name and by-ordinal column references in the same mappings collection.

Konstruktoren

SqlBulkCopyColumnMapping() SqlBulkCopyColumnMapping() SqlBulkCopyColumnMapping() SqlBulkCopyColumnMapping()

Der parameterlose Konstruktor, der ein neues SqlBulkCopyColumnMapping-Objekt initialisiert.Parameterless constructor that initializes a new SqlBulkCopyColumnMapping object.

SqlBulkCopyColumnMapping(Int32, Int32) SqlBulkCopyColumnMapping(Int32, Int32) SqlBulkCopyColumnMapping(Int32, Int32) SqlBulkCopyColumnMapping(Int32, Int32)

Erstellt eine neue Spaltenzuordnung, wobei auf die Quell- und Zielspalten mithilfe von Spaltenordnungszahlen verwiesen wird.Creates a new column mapping, using column ordinals to refer to source and destination columns.

SqlBulkCopyColumnMapping(Int32, String) SqlBulkCopyColumnMapping(Int32, String) SqlBulkCopyColumnMapping(Int32, String) SqlBulkCopyColumnMapping(Int32, String)

Erstellt eine neue Spaltenzuordnung, wobei auf die Quellspalten mithilfe von Spaltenordnungszahlen und auf die Zielspalten mithilfe von Spaltennamen verwiesen wird.Creates a new column mapping, using a column ordinal to refer to the source column and a column name for the target column.

SqlBulkCopyColumnMapping(String, Int32) SqlBulkCopyColumnMapping(String, Int32) SqlBulkCopyColumnMapping(String, Int32) SqlBulkCopyColumnMapping(String, Int32)

Erstellt eine neue Spaltenzuordnung, wobei auf die Quellspalten mithilfe von Spaltennamen und auf die Zielspalten mithilfe von Spaltenordnungszahlen verwiesen wird.Creates a new column mapping, using a column name to refer to the source column and a column ordinal for the target column.

SqlBulkCopyColumnMapping(String, String) SqlBulkCopyColumnMapping(String, String) SqlBulkCopyColumnMapping(String, String) SqlBulkCopyColumnMapping(String, String)

Erstellt eine neue Spaltenzuordnung, wobei auf die Quell- und Zielspalten mithilfe von Spaltennamen verwiesen wird.Creates a new column mapping, using column names to refer to source and destination columns.

Eigenschaften

DestinationColumn DestinationColumn DestinationColumn DestinationColumn

Name der Spalte, die in der Zieldatenbanktabelle zugeordnet wird.Name of the column being mapped in the destination database table.

DestinationOrdinal DestinationOrdinal DestinationOrdinal DestinationOrdinal

Der Ordinalwert der Zielspalte innerhalb der Zieltabelle.Ordinal value of the destination column within the destination table.

SourceColumn SourceColumn SourceColumn SourceColumn

Der Name der Spalte, die in der Datenquelle zugeordnet wird.Name of the column being mapped in the data source.

SourceOrdinal SourceOrdinal SourceOrdinal SourceOrdinal

Die Ordinalposition der Quellspalte innerhalb der Datenquelle.The ordinal position of the source column within the data source.

Methoden

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Bestimmt, ob das angegebene Objekt mit dem aktuellen Objekt identisch ist.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fungiert als Standardhashfunktion.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Ruft den Type der aktuellen Instanz ab.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.Returns a string that represents the current object.

(Inherited from Object)

Gilt für:

Siehe auch