Sdílet prostřednictvím


SqlBulkCopyColumnMappingCollection Třída

Definice

SqlBulkCopyColumnMapping Kolekce objektů, které dědí z 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
Dědičnost
SqlBulkCopyColumnMappingCollection

Příklady

Následující příklad hromadně zkopíruje data ze zdrojové tabulky v ukázkové databázi AdventureWorks do cílové tabulky ve stejné databázi. I když počet sloupců v cíli odpovídá počtu sloupců ve zdroji, názvy sloupců a pořadí řad se neshodují. SqlBulkCopyColumnMapping jsou přidány SqlBulkCopyColumnMappingCollection do objektu SqlBulkCopy pro vytvoření mapování sloupců pro hromadnou kopii.

Důležité

Tato ukázka se nespustí, pokud jste nevytvořili pracovní tabulky, jak je popsáno v příkladu hromadného kopírování. Tento kód je k dispozici k předvedení syntaxe pouze pro použití SqlBulkCopy . Pokud jsou zdrojová a cílová tabulka ve stejné SQL Server instanci, je jednodušší a rychlejší zkopírovat data pomocí příkazu Jazyka Transact-SQLINSERT … SELECT.

using System;
using System.Data;
using Microsoft.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;";
    }
}

Poznámky

Mapování sloupců definují mapování mezi zdrojem dat a cílovou tabulkou.

Pokud mapování nejsou definovaná – to znamená, ColumnMappings že kolekce je prázdná – sloupce se mapují implicitně na základě řadové pozice. Aby to fungovalo, musí se zdrojová a cílová schémata shodovat. Pokud ne, InvalidOperationException je vyhozen.

ColumnMappings Pokud kolekce není prázdná, není nutné zadat každý sloupec, který je ve zdroji dat. Ty, které kolekce nemapuje, se ignorují.

Na zdrojový a cílový sloupec můžete odkazovat podle názvu nebo pořadové řady. Ve stejné kolekci mapování můžete kombinovat odkazy na sloupce podle názvu a podle řad.

Vlastnosti

Item[Int32]

SqlBulkCopyColumnMapping Získá objekt v zadaném indexu.

Metody

Add(Int32, Int32)

Vytvoří nový SqlBulkCopyColumnMapping objekt a přidá ho do kolekce pomocí ordinálů pro určení zdrojového i cílového sloupce.

Add(Int32, String)

Vytvoří nový SqlBulkCopyColumnMapping objekt a přidá ho do kolekce pomocí ordinálu pro zdrojový sloupec a řetězce pro cílový sloupec.

Add(SqlBulkCopyColumnMapping)

Přidá zadané mapování do .SqlBulkCopyColumnMappingCollection

Add(String, Int32)

Vytvoří nový SqlBulkCopyColumnMapping a přidá ho do kolekce s použitím názvu sloupce k popisu zdrojového sloupce a ordinálu pro určení cílového sloupce.

Add(String, String)

Vytvoří nový SqlBulkCopyColumnMapping a přidá ho do kolekce pomocí názvů sloupců k určení zdrojového i cílového sloupce.

Clear()

Vymaže obsah kolekce.

Contains(SqlBulkCopyColumnMapping)

Získá hodnotu označující, zda zadaný SqlBulkCopyColumnMapping objekt existuje v kolekci.

CopyTo(SqlBulkCopyColumnMapping[], Int32)

Zkopíruje prvky objektu SqlBulkCopyColumnMappingCollection do pole SqlBulkCopyColumnMapping položek počínaje konkrétním indexem.

IndexOf(SqlBulkCopyColumnMapping)

Získá index zadaného SqlBulkCopyColumnMapping objektu.

Insert(Int32, SqlBulkCopyColumnMapping)

Do zadaného indexu vložte nový SqlBulkCopyColumnMapping .

Remove(SqlBulkCopyColumnMapping)

Odebere zadaný SqlBulkCopyColumnMapping prvek z objektu SqlBulkCopyColumnMappingCollection.

RemoveAt(Int32)

Odebere mapování v zadaném indexu z kolekce.

Platí pro