Aracılığıyla paylaş


SqlBulkCopyColumnMapping Sınıf

Tanım

Örneğin veri kaynağındaki SqlBulkCopy bir sütun ile örneğin hedef tablosundaki bir sütun arasındaki eşlemeyi tanımlar.

public ref class SqlBulkCopyColumnMapping sealed
public sealed class SqlBulkCopyColumnMapping
type SqlBulkCopyColumnMapping = class
Public NotInheritable Class SqlBulkCopyColumnMapping
Devralma
SqlBulkCopyColumnMapping

Örnekler

Aşağıdaki örnek , AdventureWorks örnek veritabanındaki bir kaynak tablodan aynı veritabanındaki hedef tabloya verileri toplu olarak kopyalar. Hedefteki sütunların sayısı kaynaktaki sütun sayısıyla eşleşse ve her hedef sütun karşılık gelen kaynak sütunla aynı sıra konumunda olsa da, sütun adları eşleşmez. SqlBulkCopyColumnMapping nesneleri, toplu kopyalama için sütun eşlemesi oluşturmak için kullanılır.

Önemli

Bu örnek, Toplu Kopyalama Örneği Kurulumu'nda açıklandığı gibi iş tablolarını oluşturmadığınız sürece çalışmaz. Bu kod, yalnızca SqlBulkCopy kullanımına yönelik söz dizimini göstermek için sağlanır. Kaynak ve hedef tablolar aynı SQL Server örneğindeyse, transact-SQL INSERT … SELECT deyimini kullanarak verileri kopyalamak daha kolay ve daha hızlıdır.

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

                // 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 mapNumber =
                    new SqlBulkCopyColumnMapping("ProductNumber", "ProdNum");
                bulkCopy.ColumnMappings.Add(mapNumber);

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

Açıklamalar

Sütun eşlemeleri, veri kaynağı ile hedef tablo arasındaki eşlemeyi tanımlar.

Eşlemeler tanımlanmamışsa ( yani koleksiyon ColumnMappings boşsa) sütunlar sıralı konuma göre örtük olarak eşlenir. Bunun çalışması için kaynak ve hedef şemaların eşleşmesi gerekir. Eğer bunu yapmazlarsa, bir InvalidOperationException atılır.

ColumnMappings Koleksiyon boş değilse, veri kaynağında bulunan her sütunun belirtilmesi gerekli değildir. Koleksiyon tarafından eşlenmeyenler yoksayılır.

Kaynak ve hedef sütunlara ada veya sıraya göre başvurabilirsiniz. Aynı eşleme koleksiyonunda ada göre ve sıralı sütun başvurularını da karıştırabilirsiniz.

Oluşturucular

SqlBulkCopyColumnMapping()

Yeni SqlBulkCopyColumnMapping bir nesne başlatan parametresiz oluşturucu.

SqlBulkCopyColumnMapping(Int32, Int32)

Kaynak ve hedef sütunlara başvurmak için sütun sıralarını kullanarak yeni bir sütun eşlemesi oluşturur.

SqlBulkCopyColumnMapping(Int32, String)

Kaynak sütuna başvurmak için sütun sırasını ve hedef sütunun sütun adını kullanarak yeni bir sütun eşlemesi oluşturur.

SqlBulkCopyColumnMapping(String, Int32)

Kaynak sütuna başvurmak için sütun adını ve hedef sütun için bir sütun sırasını kullanarak yeni bir sütun eşlemesi oluşturur.

SqlBulkCopyColumnMapping(String, String)

Kaynak ve hedef sütunlara başvurmak için sütun adlarını kullanarak yeni bir sütun eşlemesi oluşturur.

Özellikler

DestinationColumn

Hedef veritabanı tablosunda eşlenen sütunun adı.

DestinationOrdinal

Hedef tablo içindeki hedef sütunun sıra değeri.

SourceColumn

Veri kaynağında eşlenen sütunun adı.

SourceOrdinal

Kaynak sütunun veri kaynağı içindeki sıralı konumu.

Şunlara uygulanır