SqlBulkCopyColumnMappingCollection Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Raccolta di SqlBulkCopyColumnMapping oggetti che ereditano da 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
- Ereditarietà
Esempio
L'esempio seguente esegue la copia bulk di dati da una tabella di origine nel database di esempio AdventureWorks a una tabella di destinazione nello stesso database. Anche se il numero di colonne nella destinazione corrisponde al numero di colonne nell'origine, i nomi delle colonne e le posizioni ordinali non corrispondono. SqlBulkCopyColumnMapping vengono aggiunti all'oggetto SqlBulkCopyColumnMappingCollectionSqlBulkCopy per creare una mappa di colonne per la copia bulk.
Important
Questo esempio non funzionerà, a meno che non siano state create le tabelle di lavoro come descritto in Creazione di esempi di copia di massa. Il codice viene fornito solo per illustrare la sintassi relativa all'uso di SqlBulkCopy. Se le tabelle di origine e di destinazione si trovano nella stessa istanza di SQL Server, è più semplice e veloce usare un'istruzione Transact-SQL INSERT ... SELECT per copiare i dati.
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
Commenti
I mapping delle colonne definiscono il mapping tra l'origine dati e la tabella di destinazione.
Se i mapping non sono definiti, ovvero la ColumnMappings raccolta è vuota, le colonne vengono mappate in modo implicito in base alla posizione ordinale. Per il corretto funzionamento, gli schemi di origine e di destinazione devono corrispondere. In caso contrario, viene generata un'eccezione InvalidOperationException .
Se la ColumnMappings raccolta non è vuota, non è necessario specificare tutte le colonne presenti nell'origine dati. Quelli non mappati dalla raccolta vengono ignorati.
È possibile fare riferimento alle colonne di origine e di destinazione in base al nome o alla posizione ordinale. È possibile combinare riferimenti per nome e colonna ordinale nella stessa raccolta di mapping.
Proprietà
| Nome | Descrizione |
|---|---|
| Capacity |
Ottiene o imposta il numero di elementi che l'oggetto CollectionBase può contenere. (Ereditato da CollectionBase) |
| Count |
Ottiene il numero di elementi contenuti nell'istanza CollectionBase di . Impossibile eseguire l'override di questa proprietà. (Ereditato da CollectionBase) |
| InnerList |
Ottiene un oggetto ArrayList contenente l'elenco di elementi nell'istanza CollectionBase di . (Ereditato da CollectionBase) |
| Item[Int32] |
Ottiene l'oggetto SqlBulkCopyColumnMapping in corrispondenza dell'indice specificato. |
| List |
Ottiene un oggetto IList contenente l'elenco di elementi nell'istanza CollectionBase di . (Ereditato da CollectionBase) |
Metodi
| Nome | Descrizione |
|---|---|
| Add(Int32, Int32) |
Crea un nuovo SqlBulkCopyColumnMapping oggetto e lo aggiunge alla raccolta, utilizzando ordinali per specificare sia le colonne di origine che di destinazione. |
| Add(Int32, String) |
Crea un nuovo SqlBulkCopyColumnMapping oggetto e lo aggiunge alla raccolta, utilizzando un ordinale per la colonna di origine e una stringa per la colonna di destinazione. |
| Add(SqlBulkCopyColumnMapping) |
Aggiunge il mapping specificato all'oggetto SqlBulkCopyColumnMappingCollection. |
| Add(String, Int32) |
Crea un nuovo SqlBulkCopyColumnMapping oggetto e lo aggiunge alla raccolta, utilizzando un nome di colonna per descrivere la colonna di origine e un ordinale per specificare la colonna di destinazione. |
| Add(String, String) |
Crea un nuovo SqlBulkCopyColumnMapping oggetto e lo aggiunge alla raccolta, usando i nomi delle colonne per specificare sia le colonne di origine che di destinazione. |
| Clear() |
Cancella il contenuto dell'insieme. |
| Contains(SqlBulkCopyColumnMapping) |
Ottiene un valore che indica se un oggetto specificato SqlBulkCopyColumnMapping esiste nell'insieme. |
| CopyTo(SqlBulkCopyColumnMapping[], Int32) |
Copia gli elementi di in SqlBulkCopyColumnMappingCollection una matrice di SqlBulkCopyColumnMapping elementi, a partire da un indice specifico. |
| Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
| GetEnumerator() |
Restituisce un enumeratore che scorre l'istanza CollectionBase di . (Ereditato da CollectionBase) |
| GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IndexOf(SqlBulkCopyColumnMapping) |
Ottiene l'indice dell'oggetto specificato SqlBulkCopyColumnMapping . |
| Insert(Int32, SqlBulkCopyColumnMapping) |
Inserire un nuovo SqlBulkCopyColumnMapping oggetto in corrispondenza dell'indice specificato. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| OnClear() |
Esegue processi personalizzati aggiuntivi quando si cancella il contenuto dell'istanza CollectionBase . (Ereditato da CollectionBase) |
| OnClearComplete() |
Esegue processi personalizzati aggiuntivi dopo la cancellazione del contenuto dell'istanza CollectionBase . (Ereditato da CollectionBase) |
| OnInsert(Int32, Object) |
Esegue processi personalizzati aggiuntivi prima di inserire un nuovo elemento nell'istanza CollectionBase di . (Ereditato da CollectionBase) |
| OnInsertComplete(Int32, Object) |
Esegue processi personalizzati aggiuntivi dopo l'inserimento di un nuovo elemento nell'istanza CollectionBase di . (Ereditato da CollectionBase) |
| OnRemove(Int32, Object) |
Esegue processi personalizzati aggiuntivi durante la rimozione di un elemento dall'istanza CollectionBase di . (Ereditato da CollectionBase) |
| OnRemoveComplete(Int32, Object) |
Esegue processi personalizzati aggiuntivi dopo la rimozione di un elemento dall'istanza CollectionBase di . (Ereditato da CollectionBase) |
| OnSet(Int32, Object, Object) |
Esegue processi personalizzati aggiuntivi prima di impostare un valore nell'istanza CollectionBase di . (Ereditato da CollectionBase) |
| OnSetComplete(Int32, Object, Object) |
Esegue processi personalizzati aggiuntivi dopo aver impostato un valore nell'istanza CollectionBase di . (Ereditato da CollectionBase) |
| OnValidate(Object) |
Esegue processi personalizzati aggiuntivi durante la convalida di un valore. (Ereditato da CollectionBase) |
| Remove(SqlBulkCopyColumnMapping) |
Rimuove l'elemento specificato SqlBulkCopyColumnMapping da SqlBulkCopyColumnMappingCollection. |
| RemoveAt(Int32) |
Rimuove il mapping in corrispondenza dell'indice specificato dalla raccolta. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
| Nome | Descrizione |
|---|---|
| ICollection.CopyTo(Array, Int32) |
Copia l'intero CollectionBase oggetto in un oggetto unidimensionale Arraycompatibile, a partire dall'indice specificato della matrice di destinazione. (Ereditato da CollectionBase) |
| ICollection.IsSynchronized |
Ottiene un valore che indica se l'accesso CollectionBase a è sincronizzato (thread-safe). (Ereditato da CollectionBase) |
| ICollection.SyncRoot |
Ottiene un oggetto che può essere utilizzato per sincronizzare l'accesso al CollectionBase. (Ereditato da CollectionBase) |
| IList.Add(Object) |
Aggiunge un oggetto alla fine dell'oggetto CollectionBase. (Ereditato da CollectionBase) |
| IList.Contains(Object) |
Determina se contiene CollectionBase un elemento specifico. (Ereditato da CollectionBase) |
| IList.IndexOf(Object) |
Cerca l'oggetto specificato Object e restituisce l'indice in base zero della prima occorrenza all'interno dell'intero CollectionBaseoggetto . (Ereditato da CollectionBase) |
| IList.Insert(Int32, Object) |
Inserisce un elemento nell'oggetto CollectionBase in corrispondenza dell'indice specificato. (Ereditato da CollectionBase) |
| IList.IsFixedSize |
Ottiene un valore che indica se ha CollectionBase una dimensione fissa. (Ereditato da CollectionBase) |
| IList.IsReadOnly |
Ottiene un valore che indica se il CollectionBase è di sola lettura. (Ereditato da CollectionBase) |
| IList.Item[Int32] |
Ottiene o imposta l'elemento in corrispondenza dell'indice specificato. (Ereditato da CollectionBase) |
| IList.Remove(Object) |
Rimuove la prima occorrenza di un oggetto specifico da CollectionBase. (Ereditato da CollectionBase) |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| AsParallel(IEnumerable) |
Abilita la parallelizzazione di una query. |
| AsQueryable(IEnumerable) |
Converte un IEnumerable in un IQueryable. |
| Cast<TResult>(IEnumerable) |
Esegue il cast degli elementi di un IEnumerable al tipo specificato. |
| OfType<TResult>(IEnumerable) |
Filtra gli elementi di un IEnumerable in base a un tipo specificato. |