SqlBulkCopyColumnMapping Osztály
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
Meghatározza a példány adatforrásában lévő SqlBulkCopy oszlop és a példány céltáblájának egy oszlopa közötti leképezést.
public ref class SqlBulkCopyColumnMapping sealed
public sealed class SqlBulkCopyColumnMapping
type SqlBulkCopyColumnMapping = class
Public NotInheritable Class SqlBulkCopyColumnMapping
- Öröklődés
-
SqlBulkCopyColumnMapping
Példák
Az alábbi példa tömegesen másolja az adatokat az AdventureWorks mintaadatbázis egyik forrástáblájából egy céltáblába ugyanabban az adatbázisban. Bár a célhely oszlopainak száma megegyezik a forrás oszlopainak számával, és minden céloszlop ugyanabban a sorrendben van, mint a megfelelő forrásoszlop, az oszlopnevek nem egyeznek. SqlBulkCopyColumnMapping objektumokkal hozhat létre oszloptérképet a tömeges másoláshoz.
Important
Ez a példa nem fog futni, hacsak nem hozta létre a munkatáblákat a Tömeges másolási példa beállításaszerint. Ez a kód csak az SqlBulkCopy használatának szintaxisát mutatja be. Ha a forrás- és céltáblák ugyanabban a SQL Server példányban találhatók, egyszerűbb és gyorsabb egy Transact-SQL INSERT … SELECT utasítás használata az adatok másolásához.
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";
// 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 mapMumber =
new SqlBulkCopyColumnMapping("ProductNumber", "ProdNum");
bulkCopy.ColumnMappings.Add(mapMumber);
// 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"
' Set up the column mappings by name.
Dim mapID As New _
SqlBulkCopyColumnMapping("ProductID", "ProdID")
bulkCopy.ColumnMappings.Add(mapID)
Dim mapName As New _
SqlBulkCopyColumnMapping("Name", "ProdName")
bulkCopy.ColumnMappings.Add(mapName)
Dim mapMumber As New _
SqlBulkCopyColumnMapping("ProductNumber", "ProdNum")
bulkCopy.ColumnMappings.Add(mapMumber)
' 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
Megjegyzések
Az oszlopleképezések határozzák meg az adatforrás és a céltábla közötti leképezést.
Ha a leképezések nincsenek definiálva – vagyis a ColumnMappings gyűjtemény üres –, az oszlopok implicit módon vannak leképezve a sorrendi pozíció alapján. Ahhoz, hogy ez működjön, a forrás- és célsémáknak egyeznie kell. Ha nem, egy InvalidOperationException dobás lesz.
Ha a ColumnMappings gyűjtemény nem üres, nem kell megadni az adatforrásban található összes oszlopot. A gyűjtemény által nem leképezetteket a rendszer figyelmen kívül hagyja.
A forrás- és céloszlopokra név vagy sorszám alapján hivatkozhat. A leképezési gyűjteményben a név és a by-ordinális oszlophivatkozások is keverhetők.
Konstruktorok
| Name | Description |
|---|---|
| SqlBulkCopyColumnMapping() |
Paraméter nélküli konstruktor, amely inicializál egy új SqlBulkCopyColumnMapping objektumot. |
| SqlBulkCopyColumnMapping(Int32, Int32) |
Új oszlopleképezést hoz létre a forrás- és céloszlopokra hivatkozó oszloprendek használatával. |
| SqlBulkCopyColumnMapping(Int32, String) |
Létrehoz egy új oszlopleképezést egy oszloprend használatával, amely a forrásoszlopra és a céloszlop oszlopnevére hivatkozik. |
| SqlBulkCopyColumnMapping(String, Int32) |
Létrehoz egy új oszlopleképezést, amely egy oszlopnév használatával hivatkozik a forrásoszlopra és egy oszloprendre a céloszlophoz. |
| SqlBulkCopyColumnMapping(String, String) |
Létrehoz egy új oszlopleképezést, amely oszlopnevekkel hivatkozik a forrás- és céloszlopokra. |
Tulajdonságok
| Name | Description |
|---|---|
| DestinationColumn |
A céladatbázis táblában leképezett oszlop neve. |
| DestinationOrdinal |
A céloszlop sorszáma a céltáblában. |
| SourceColumn |
Az adatforrásban leképezett oszlop neve. |
| SourceOrdinal |
A forrásoszlop sorszáma az adatforráson belül. |
Metódusok
| Name | Description |
|---|---|
| Equals(Object) |
Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal. (Öröklődés forrása Object) |
| GetHashCode() |
Ez az alapértelmezett kivonatoló függvény. (Öröklődés forrása Object) |
| GetType() |
Lekéri az Type aktuális példányt. (Öröklődés forrása Object) |
| MemberwiseClone() |
Az aktuális Objectpéldány sekély másolatát hozza létre. (Öröklődés forrása Object) |
| ToString() |
Az aktuális objektumot jelképező sztringet ad vissza. (Öröklődés forrása Object) |