Bagikan melalui


SqlBulkCopyColumnMappingCollection Kelas

Definisi

SqlBulkCopyColumnMapping Kumpulan objek yang mewarisi dari 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
Warisan
SqlBulkCopyColumnMappingCollection

Contoh

Contoh berikut menyalin data secara massal dari tabel sumber di database sampel AdventureWorks ke tabel tujuan dalam database yang sama. Meskipun jumlah kolom di tujuan cocok dengan jumlah kolom di sumber, nama kolom dan posisi ordinal tidak cocok. SqlBulkCopyColumnMapping ditambahkan ke SqlBulkCopyColumnMappingCollection untuk SqlBulkCopy objek guna membuat peta kolom untuk salinan massal.

Penting

Sampel ini tidak akan berjalan kecuali Anda telah membuat tabel kerja seperti yang dijelaskan dalam Penyiapan Contoh Salinan Massal. Kode ini disediakan untuk mendemonstrasikan sintaks untuk menggunakan SqlBulkCopy saja. Jika tabel sumber dan tujuan berada dalam instans SQL Server yang sama, lebih mudah dan lebih cepat untuk menggunakan pernyataan Transact-SQL INSERT … SELECT untuk menyalin data.

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

Keterangan

Pemetaan kolom menentukan pemetaan antara sumber data dan tabel target.

Jika pemetaan tidak ditentukan - yaitu, ColumnMappings koleksi kosong - kolom dipetakan secara implisit berdasarkan posisi ordinal. Agar ini berfungsi, skema sumber dan target harus cocok. Jika mereka tidak, akan InvalidOperationException dilemparkan.

ColumnMappings Jika koleksi tidak kosong, tidak setiap kolom yang ada di sumber data harus ditentukan. Yang tidak dipetakan oleh koleksi diabaikan.

Anda dapat merujuk ke kolom sumber dan target dengan nama atau ordinal. Anda dapat mencampur referensi kolom berdasarkan nama dan berdasarkan ordinal dalam koleksi pemetaan yang sama.

Properti

Item[Int32]

Mendapatkan objek pada SqlBulkCopyColumnMapping indeks yang ditentukan.

Metode

Add(Int32, Int32)

Membuat baru SqlBulkCopyColumnMapping dan menambahkannya ke koleksi, menggunakan ordinal untuk menentukan kolom sumber dan tujuan.

Add(Int32, String)

Membuat baru SqlBulkCopyColumnMapping dan menambahkannya ke koleksi, menggunakan ordinal untuk kolom sumber dan string untuk kolom tujuan.

Add(SqlBulkCopyColumnMapping)

Menambahkan pemetaan yang ditentukan ke SqlBulkCopyColumnMappingCollection.

Add(String, Int32)

Membuat baru SqlBulkCopyColumnMapping dan menambahkannya ke koleksi, menggunakan nama kolom untuk menjelaskan kolom sumber dan ordinal untuk menentukan kolom tujuan.

Add(String, String)

Membuat baru SqlBulkCopyColumnMapping dan menambahkannya ke koleksi, menggunakan nama kolom untuk menentukan kolom sumber dan tujuan.

Clear()

Menghapus isi koleksi.

Contains(SqlBulkCopyColumnMapping)

Mendapatkan nilai yang menunjukkan apakah objek tertentu SqlBulkCopyColumnMapping ada dalam koleksi.

CopyTo(SqlBulkCopyColumnMapping[], Int32)

Menyalin elemen ke SqlBulkCopyColumnMappingCollection array SqlBulkCopyColumnMapping item, dimulai pada indeks tertentu.

IndexOf(SqlBulkCopyColumnMapping)

Mendapatkan indeks objek yang ditentukan SqlBulkCopyColumnMapping .

Insert(Int32, SqlBulkCopyColumnMapping)

Sisipkan yang baru SqlBulkCopyColumnMapping pada indeks yang ditentukan.

Remove(SqlBulkCopyColumnMapping)

Menghapus elemen yang ditentukan SqlBulkCopyColumnMapping dari SqlBulkCopyColumnMappingCollection.

RemoveAt(Int32)

Menghapus pemetaan pada indeks yang ditentukan dari koleksi.

Berlaku untuk