SqlBulkCopyColumnMappingCollection Класс

Определение

Коллекция объектов SqlBulkCopyColumnMapping, наследующих CollectionBase.Collection of SqlBulkCopyColumnMapping objects that inherits from 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
Наследование
SqlBulkCopyColumnMappingCollection

Примеры

В следующем примере выполняется операция копирования данных из исходной таблицы в образце базы данных AdventureWorks в целевую таблицу в той же базе данных.The following example bulk copies data from a source table in the AdventureWorks sample database to a destination table in the same database. Хотя количество столбцов в назначении совпадает с количеством столбцов в источнике, имена столбцов и порядковые позиции не совпадают.Although the number of columns in the destination matches the number of columns in the source, the column names and ordinal positions do not match. SqlBulkCopyColumnMappingдобавляются в SqlBulkCopyColumnMappingCollection SqlBulkCopy для объекта, чтобы создать карту столбцов для операции с массовым копированием.SqlBulkCopyColumnMapping are added to the SqlBulkCopyColumnMappingCollection for the SqlBulkCopy object to create a column map for the bulk copy.

Важно!

Этот пример не будет выполняться, если вы не создали рабочие таблицы, как описано в статье Пример установки с помощью инструкций копирования.This sample will not run unless you have created the work tables as described in Bulk Copy Example Setup. Этот код предназначен для демонстрации синтаксиса только для использования SqlBulkCopy .This code is provided to demonstrate the syntax for using SqlBulkCopy only. Если исходная и целевая таблицы находятся в одном и том же экземпляре SQL Server, то проще и быстрее использовать инструкцию INSERT … SELECT Transact-SQL для копирования данных.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";

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

Комментарии

Сопоставления столбцов определяют сопоставление источника данных и целевой таблицы.Column mappings define the mapping between data source and the target table.

Если сопоставления не определены, ColumnMappings то есть коллекция пуста, столбцы сопоставляются неявно на основе порядкового номера.If mappings are not defined - that is, the ColumnMappings collection is empty - the columns are mapped implicitly based on ordinal position. Чтобы это работало, исходная и Целевая схемы должны совпадать.For this to work, source and target schemas must match. В InvalidOperationException противном случае создается исключение.If they do not, an InvalidOperationException is thrown.

ColumnMappings Если коллекция не пуста, необходимо указать не каждый столбец в источнике данных.If the ColumnMappings collection is not empty, not every column present in the data source has to be specified. Те, которые не сопоставлены коллекции, игнорируются.Those not mapped by the collection are ignored.

Вы можете ссылаться на исходный и целевой столбцы по имени или порядковому номеру.You can refer to source and target columns by either name or ordinal. В одной коллекции сопоставлений можно смешивать ссылки на столбцы по именам и по порядковым номерам.You can mix by-name and by-ordinal column references in the same mappings collection.

Свойства

Capacity

Возвращает или задает число элементов, которое может содержать список CollectionBase.Gets or sets the number of elements that the CollectionBase can contain.

(Унаследовано от CollectionBase)
Count
InnerList

Возвращает объект ArrayList, в котором хранится список элементов экземпляра класса CollectionBase.Gets an ArrayList containing the list of elements in the CollectionBase instance.

(Унаследовано от CollectionBase)
Item[Int32]

Возвращает объект SqlBulkCopyColumnMapping по указанному индексу.Gets the SqlBulkCopyColumnMapping object at the specified index.

List

Возвращает объект IList, в котором хранится список элементов экземпляра класса CollectionBase.Gets an IList containing the list of elements in the CollectionBase instance.

(Унаследовано от CollectionBase)

Методы

Add(Int32, Int32)

Создает новый SqlBulkCopyColumnMapping и добавляет его в коллекцию, используя порядковые номера исходного столбца и столбца назначения.Creates a new SqlBulkCopyColumnMapping and adds it to the collection, using ordinals to specify both source and destination columns.

Add(Int32, String)

Создает новый SqlBulkCopyColumnMapping и добавляет его в коллекцию, используя порядковый номер исходного столбца и строку для столбца назначения.Creates a new SqlBulkCopyColumnMapping and adds it to the collection, using an ordinal for the source column and a string for the destination column.

Add(SqlBulkCopyColumnMapping)

Добавляет заданное сопоставление в SqlBulkCopyColumnMappingCollection.Adds the specified mapping to the SqlBulkCopyColumnMappingCollection.

Add(String, Int32)

Создает новый SqlBulkCopyColumnMapping и добавляет его в коллекцию, используя имя исходного столбца и порядковый номер столбца назначения.Creates a new SqlBulkCopyColumnMapping and adds it to the collection, using a column name to describe the source column and an ordinal to specify the destination column.

Add(String, String)

Создает новый SqlBulkCopyColumnMapping и добавляет его в коллекцию, используя имена исходного столбца и столбца назначения.Creates a new SqlBulkCopyColumnMapping and adds it to the collection, using column names to specify both source and destination columns.

Clear()

Удаляет содержимое коллекции.Clears the contents of the collection.

Contains(SqlBulkCopyColumnMapping)

Получает значение, указывающее, существует ли конкретный объект SqlBulkCopyColumnMapping в коллекции.Gets a value indicating whether a specified SqlBulkCopyColumnMapping object exists in the collection.

CopyTo(SqlBulkCopyColumnMapping[], Int32)

Копирует элементы коллекции SqlBulkCopyColumnMappingCollection в массив элементов SqlBulkCopyColumnMapping начиная с определенного индекса.Copies the elements of the SqlBulkCopyColumnMappingCollection to an array of SqlBulkCopyColumnMapping items, starting at a particular index.

Equals(Object)

Определяет, равен ли указанный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
GetEnumerator()
GetHashCode()

Служит в качестве хэш-функции по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
IndexOf(SqlBulkCopyColumnMapping)

Возвращает индекс указанного объекта SqlBulkCopyColumnMapping.Gets the index of the specified SqlBulkCopyColumnMapping object.

Insert(Int32, SqlBulkCopyColumnMapping)

Вставляет новый объект SqlBulkCopyColumnMapping по указанному индексу.Insert a new SqlBulkCopyColumnMapping at the index specified.

MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
OnClear()

Выполняет дополнительные пользовательские действия при очистке содержимого экземпляра CollectionBase.Performs additional custom processes when clearing the contents of the CollectionBase instance.

(Унаследовано от CollectionBase)
OnClearComplete()

Осуществляет дополнительные пользовательские действия после удаления содержимого экземпляра класса CollectionBase.Performs additional custom processes after clearing the contents of the CollectionBase instance.

(Унаследовано от CollectionBase)
OnInsert(Int32, Object)

Выполняет дополнительные пользовательские действия перед вставкой нового элемента в экземпляр класса CollectionBase.Performs additional custom processes before inserting a new element into the CollectionBase instance.

(Унаследовано от CollectionBase)
OnInsertComplete(Int32, Object)

Выполняет дополнительные пользовательские действия после вставки нового элемента в экземпляр класса CollectionBase.Performs additional custom processes after inserting a new element into the CollectionBase instance.

(Унаследовано от CollectionBase)
OnRemove(Int32, Object)

Осуществляет дополнительные пользовательские действия при удалении элемента из экземпляра класса CollectionBase.Performs additional custom processes when removing an element from the CollectionBase instance.

(Унаследовано от CollectionBase)
OnRemoveComplete(Int32, Object)

Осуществляет дополнительные пользовательские действия после удаления элемента из экземпляра класса CollectionBase.Performs additional custom processes after removing an element from the CollectionBase instance.

(Унаследовано от CollectionBase)
OnSet(Int32, Object, Object)

Выполняет дополнительные пользовательские действия перед заданием значения в экземпляре класса CollectionBase.Performs additional custom processes before setting a value in the CollectionBase instance.

(Унаследовано от CollectionBase)
OnSetComplete(Int32, Object, Object)

Выполняет дополнительные пользовательские действия после задания значения в экземпляре класса CollectionBase.Performs additional custom processes after setting a value in the CollectionBase instance.

(Унаследовано от CollectionBase)
OnValidate(Object)

Выполняет дополнительные пользовательские операции при проверке значения.Performs additional custom processes when validating a value.

(Унаследовано от CollectionBase)
Remove(SqlBulkCopyColumnMapping)

Удаляет заданный элемент SqlBulkCopyColumnMapping из SqlBulkCopyColumnMappingCollection.Removes the specified SqlBulkCopyColumnMapping element from the SqlBulkCopyColumnMappingCollection.

RemoveAt(Int32)

Удаляет из коллекции сопоставление с заданным индексом.Removes the mapping at the specified index from the collection.

ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)

Явные реализации интерфейса

ICollection.CopyTo(Array, Int32)
ICollection.IsSynchronized
ICollection.SyncRoot
IList.Add(Object)
IList.Contains(Object)
IList.IndexOf(Object)
IList.Insert(Int32, Object)
IList.IsFixedSize
IList.IsReadOnly
IList.Item[Int32]
IList.Remove(Object)

Методы расширения

Cast<TResult>(IEnumerable)

Приводит элементы объекта IEnumerable к заданному типу.Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

Выполняет фильтрацию элементов объекта IEnumerable по заданному типу.Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

Позволяет осуществлять параллельный запрос.Enables parallelization of a query.

AsQueryable(IEnumerable)

Преобразовывает коллекцию IEnumerable в объект IQueryable.Converts an IEnumerable to an IQueryable.

Применяется к

Дополнительно