SqlBulkCopyColumnMappingCollection Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Coleção de SqlBulkCopyColumnMapping objetos que herda 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
- Herança
Exemplos
O exemplo a seguir copia dados em massa de uma tabela de origem no banco de dados de exemplo AdventureWorks para uma tabela de destino no mesmo banco de dados. Embora o número de colunas no destino corresponda ao número de colunas na origem, os nomes das colunas e as posições ordinais não correspondem. SqlBulkCopyColumnMapping são adicionados ao SqlBulkCopyColumnMappingCollection objeto para SqlBulkCopy criar um mapa de coluna para a cópia em massa.
Importante
Essa amostra não será executada, a menos que você tenha criado as tabelas de trabalho conforme descrito em Configuração de exemplo de cópia em massa. Esse código é fornecido para demonstrar a sintaxe para usar somente SqlBulkCopy. Se as tabelas de origem e destino estiverem na mesma instância do SQL Server, será mais fácil e rápido usar uma instrução Transact-SQL INSERT ... SELECT para copiar os dados.
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
Comentários
Os mapeamentos de coluna definem o mapeamento entre a fonte de dados e a tabela de destino.
Se os mapeamentos não estiverem definidos, ou seja, a ColumnMappings coleção estiver vazia, as colunas serão mapeadas implicitamente com base na posição ordinal. Para que isso funcione, os esquemas de origem e destino devem corresponder. Se não o fizerem, um InvalidOperationException é jogado.
Se a ColumnMappings coleção não estiver vazia, nem todas as colunas presentes na fonte de dados precisarão ser especificadas. Aqueles não mapeados pela coleção são ignorados.
Você pode se referir às colunas de origem e de destino por nome ou ordinal. Você pode misturar referências de coluna por nome e por ordinal na mesma coleção de mapeamentos.
Propriedades
| Nome | Description |
|---|---|
| Capacity |
Obtém ou define o número de elementos que podem CollectionBase conter. (Herdado de CollectionBase) |
| Count |
Obtém o número de elementos contidos na CollectionBase instância. Essa propriedade não pode ser substituída. (Herdado de CollectionBase) |
| InnerList |
Obtém uma ArrayList lista que contém os elementos na CollectionBase instância. (Herdado de CollectionBase) |
| Item[Int32] |
Obtém o SqlBulkCopyColumnMapping objeto no índice especificado. |
| List |
Obtém uma IList lista que contém os elementos na CollectionBase instância. (Herdado de CollectionBase) |
Métodos
| Nome | Description |
|---|---|
| Add(Int32, Int32) |
Cria um novo SqlBulkCopyColumnMapping e adiciona-o à coleção, usando ordinais para especificar colunas de origem e de destino. |
| Add(Int32, String) |
Cria um novo SqlBulkCopyColumnMapping e adiciona-o à coleção, usando um ordinal para a coluna de origem e uma cadeia de caracteres para a coluna de destino. |
| Add(SqlBulkCopyColumnMapping) |
Adiciona o mapeamento especificado ao SqlBulkCopyColumnMappingCollection. |
| Add(String, Int32) |
Cria um novo SqlBulkCopyColumnMapping e adiciona-o à coleção, usando um nome de coluna para descrever a coluna de origem e um ordinal para especificar a coluna de destino. |
| Add(String, String) |
Cria um novo SqlBulkCopyColumnMapping e adiciona-o à coleção, usando nomes de coluna para especificar colunas de origem e de destino. |
| Clear() |
Limpa o conteúdo da coleção. |
| Contains(SqlBulkCopyColumnMapping) |
Obtém um valor que indica se um objeto especificado SqlBulkCopyColumnMapping existe na coleção. |
| CopyTo(SqlBulkCopyColumnMapping[], Int32) |
Copia os elementos de SqlBulkCopyColumnMappingCollection uma matriz de SqlBulkCopyColumnMapping itens, começando em um índice específico. |
| Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
| GetEnumerator() |
Retorna um enumerador que itera por meio da CollectionBase instância. (Herdado de CollectionBase) |
| GetHashCode() |
Serve como a função hash predefinida. (Herdado de Object) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IndexOf(SqlBulkCopyColumnMapping) |
Obtém o índice do objeto especificado SqlBulkCopyColumnMapping . |
| Insert(Int32, SqlBulkCopyColumnMapping) |
Insira um novo SqlBulkCopyColumnMapping no índice especificado. |
| MemberwiseClone() |
Cria uma cópia superficial do Objectatual. (Herdado de Object) |
| OnClear() |
Executa processos personalizados adicionais ao limpar o conteúdo da CollectionBase instância. (Herdado de CollectionBase) |
| OnClearComplete() |
Executa processos personalizados adicionais depois de limpar o conteúdo da CollectionBase instância. (Herdado de CollectionBase) |
| OnInsert(Int32, Object) |
Executa processos personalizados adicionais antes de inserir um novo elemento na CollectionBase instância. (Herdado de CollectionBase) |
| OnInsertComplete(Int32, Object) |
Executa processos personalizados adicionais depois de inserir um novo elemento na CollectionBase instância. (Herdado de CollectionBase) |
| OnRemove(Int32, Object) |
Executa processos personalizados adicionais ao remover um elemento da CollectionBase instância. (Herdado de CollectionBase) |
| OnRemoveComplete(Int32, Object) |
Executa processos personalizados adicionais depois de remover um elemento da CollectionBase instância. (Herdado de CollectionBase) |
| OnSet(Int32, Object, Object) |
Executa processos personalizados adicionais antes de definir um valor na CollectionBase instância. (Herdado de CollectionBase) |
| OnSetComplete(Int32, Object, Object) |
Executa processos personalizados adicionais depois de definir um valor na CollectionBase instância. (Herdado de CollectionBase) |
| OnValidate(Object) |
Executa processos personalizados adicionais ao validar um valor. (Herdado de CollectionBase) |
| Remove(SqlBulkCopyColumnMapping) |
Remove o elemento especificado SqlBulkCopyColumnMapping do SqlBulkCopyColumnMappingCollection. |
| RemoveAt(Int32) |
Remove o mapeamento no índice especificado da coleção. |
| ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Copia o todo CollectionBase para um unidimensional Arraycompatível, começando no índice especificado da matriz de destino. (Herdado de CollectionBase) |
| ICollection.IsSynchronized |
Obtém um valor que indica se o acesso ao CollectionBase é sincronizado (thread safe). (Herdado de CollectionBase) |
| ICollection.SyncRoot |
Obtém um objeto que pode ser usado para sincronizar o acesso ao CollectionBase. (Herdado de CollectionBase) |
| IList.Add(Object) |
Adiciona um objeto ao final do CollectionBase. (Herdado de CollectionBase) |
| IList.Contains(Object) |
Determina se o CollectionBase elemento contém um elemento específico. (Herdado de CollectionBase) |
| IList.IndexOf(Object) |
Pesquisa o índice especificado Object e retorna o índice baseado em zero da primeira ocorrência em todo CollectionBaseo . (Herdado de CollectionBase) |
| IList.Insert(Int32, Object) |
Insere um elemento CollectionBase no índice especificado. (Herdado de CollectionBase) |
| IList.IsFixedSize |
Obtém um valor que indica se o CollectionBase tamanho tem um tamanho fixo. (Herdado de CollectionBase) |
| IList.IsReadOnly |
Obtém um valor que indica se o CollectionBase valor é somente leitura. (Herdado de CollectionBase) |
| IList.Item[Int32] |
Obtém ou define o elemento no índice especificado. (Herdado de CollectionBase) |
| IList.Remove(Object) |
Remove a primeira ocorrência de um objeto específico do CollectionBase. (Herdado de CollectionBase) |
Métodos de Extensão
| Nome | Description |
|---|---|
| AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |
| Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado. |
| OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado. |