SqlBulkCopyColumnMappingCollection.Add Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přetížení
| Název | Description |
|---|---|
| Add(SqlBulkCopyColumnMapping) |
Přidá zadané mapování do souboru SqlBulkCopyColumnMappingCollection. |
| Add(Int32, Int32) |
Vytvoří novou SqlBulkCopyColumnMapping a přidá ji do kolekce pomocí ordinalů k určení zdrojových i cílových sloupců. |
| Add(Int32, String) |
Vytvoří novou SqlBulkCopyColumnMapping a přidá ji do kolekce pomocí pořadového čísla pro zdrojový sloupec a řetězce pro cílový sloupec. |
| Add(String, Int32) |
Vytvoří nový SqlBulkCopyColumnMapping a přidá ho do kolekce s použitím názvu sloupce, který popisuje zdrojový sloupec a pořadový řádek pro zadání cílového sloupce. |
| Add(String, String) |
Vytvoří novou SqlBulkCopyColumnMapping a přidá ji do kolekce a pomocí názvů sloupců určí zdrojové i cílové sloupce. |
Add(SqlBulkCopyColumnMapping)
Přidá zadané mapování do souboru SqlBulkCopyColumnMappingCollection.
public:
Microsoft::Data::SqlClient::SqlBulkCopyColumnMapping ^ Add(Microsoft::Data::SqlClient::SqlBulkCopyColumnMapping ^ bulkCopyColumnMapping);
public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping bulkCopyColumnMapping);
member this.Add : Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping -> Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping
Public Function Add (bulkCopyColumnMapping As SqlBulkCopyColumnMapping) As SqlBulkCopyColumnMapping
Parametry
- bulkCopyColumnMapping
- SqlBulkCopyColumnMapping
Objekt SqlBulkCopyColumnMapping , který popisuje mapování, které se má přidat do kolekce.
Návraty
Objekt SqlBulkCopyColumnMapping .
Příklady
Následující příklad hromadně kopí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řadové pozice se neshodují. SqlBulkCopyColumnMapping objekty slouží k vytvoření mapy sloupců pro hromadnou kopii.
Important
Tento příklad se nespustí, pokud jste nevytvořili pracovní tabulky, jak je popsáno v Příklad nastavení 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é tabulky ve stejné instanci SQL Serveru, je jednodušší a rychlejší použít příkaz Transact-SQL INSERT … SELECT ke zkopírování dat.
namespace SqlBulkCopy_ColumnMapping;
// <Snippet1>
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;";
}
}
// </Snippet1>
Následující příklad hromadně kopí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řadové pozice se neshodují. SqlBulkCopyColumnMapping objekty slouží k vytvoření mapy sloupců pro hromadnou kopii.
Important
Tento příklad se nespustí, pokud jste nevytvořili pracovní tabulky, jak je popsáno v Příklad nastavení 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é tabulky ve stejné instanci SQL Serveru, je jednodušší a rychlejší použít příkaz Transact-SQL INSERT … SELECT ke zkopírování dat.
namespace SqlBulkCopy_ColumnMapping;
// <Snippet1>
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;";
}
}
// </Snippet1>
Platí pro
Add(Int32, Int32)
Vytvoří novou SqlBulkCopyColumnMapping a přidá ji do kolekce pomocí ordinalů k určení zdrojových i cílových sloupců.
public:
Microsoft::Data::SqlClient::SqlBulkCopyColumnMapping ^ Add(int sourceColumnIndex, int destinationColumnIndex);
public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(int sourceColumnIndex, int destinationColumnIndex);
member this.Add : int * int -> Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping
Public Function Add (sourceColumnIndex As Integer, destinationColumnIndex As Integer) As SqlBulkCopyColumnMapping
Parametry
- sourceColumnIndex
- Int32
Pořadové umístění zdrojového sloupce ve zdroji dat.
- destinationColumnIndex
- Int32
Pořadové umístění cílového sloupce v cílové tabulce.
Návraty
Mapování sloupců.
Příklady
Následující příklad hromadně kopí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řadové pozice se neshodují. SqlBulkCopyColumnMapping objekty slouží k vytvoření mapy sloupců pro hromadnou kopii pomocí řadové pozice zdrojového a cílového sloupce.
Important
Tento příklad se nespustí, pokud jste nevytvořili pracovní tabulky, jak je popsáno v Příklad nastavení 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é tabulky ve stejné instanci SQL Serveru, je jednodušší a rychlejší použít příkaz Transact-SQL INSERT … SELECT ke zkopírování dat.
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(0, 0);
bulkCopy.ColumnMappings.Add(1, 2);
bulkCopy.ColumnMappings.Add(2, 1);
// 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í v kolekci musí být jednotná: buď všechny páry celých čísel/celých čísel, všechny páry řetězců/řetězců, všechny páry celých čísel/řetězců, nebo všechny páry řetězců/celých čísel. Pokud se pokusíte přidat mapování, které se liší od ostatních již v kolekci, InvalidOperationException vyvolá se chyba.
Platí pro
Add(Int32, String)
Vytvoří novou SqlBulkCopyColumnMapping a přidá ji do kolekce pomocí pořadového čísla pro zdrojový sloupec a řetězce pro cílový sloupec.
public:
Microsoft::Data::SqlClient::SqlBulkCopyColumnMapping ^ Add(int sourceColumnIndex, System::String ^ destinationColumn);
public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(int sourceColumnIndex, string destinationColumn);
member this.Add : int * string -> Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping
Public Function Add (sourceColumnIndex As Integer, destinationColumn As String) As SqlBulkCopyColumnMapping
Parametry
- sourceColumnIndex
- Int32
Pořadové umístění zdrojového sloupce ve zdroji dat.
- destinationColumn
- String
Název cílového sloupce v cílové tabulce.
Návraty
Mapování sloupců.
Příklady
Následující příklad hromadně kopí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řadové pozice se neshodují. SqlBulkCopyColumnMapping objekty slouží k vytvoření mapy sloupců pro hromadnou kopii.
Important
Tento příklad se nespustí, pokud jste nevytvořili pracovní tabulky, jak je popsáno v Příklad nastavení 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é tabulky ve stejné instanci SQL Serveru, je jednodušší a rychlejší použít příkaz Transact-SQL INSERT … SELECT ke zkopírování dat.
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(0, 0);
bulkCopy.ColumnMappings.Add(1, 2);
bulkCopy.ColumnMappings.Add(2, 1);
// 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í v kolekci musí být jednotná: buď všechny páry celých čísel/celých čísel, všechny páry řetězců/řetězců, všechny páry celých čísel/řetězců, nebo všechny páry řetězců/celých čísel. Pokud se pokusíte přidat mapování, které se liší od ostatních již v kolekci, InvalidOperationException vyvolá se chyba.
Platí pro
Add(String, Int32)
Vytvoří nový SqlBulkCopyColumnMapping a přidá ho do kolekce s použitím názvu sloupce, který popisuje zdrojový sloupec a pořadový řádek pro zadání cílového sloupce.
public:
Microsoft::Data::SqlClient::SqlBulkCopyColumnMapping ^ Add(System::String ^ sourceColumn, int destinationColumnIndex);
public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(string sourceColumn, int destinationColumnIndex);
member this.Add : string * int -> Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping
Public Function Add (sourceColumn As String, destinationColumnIndex As Integer) As SqlBulkCopyColumnMapping
Parametry
- sourceColumn
- String
Název zdrojového sloupce v rámci zdroje dat.
- destinationColumnIndex
- Int32
Pořadové umístění cílového sloupce v cílové tabulce.
Návraty
Mapování sloupců.
Příklady
Následující příklad hromadně kopí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řadové pozice se neshodují. SqlBulkCopyColumnMapping objekty slouží k vytvoření mapy sloupců pro hromadnou kopii.
Important
Tento příklad se nespustí, pokud jste nevytvořili pracovní tabulky, jak je popsáno v Příklad nastavení 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é tabulky ve stejné instanci SQL Serveru, je jednodušší a rychlejší použít příkaz Transact-SQL INSERT … SELECT ke zkopírování dat.
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(0, 0);
bulkCopy.ColumnMappings.Add(1, 2);
bulkCopy.ColumnMappings.Add(2, 1);
// 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í v kolekci musí být jednotná: buď všechny páry celých čísel/celých čísel, všechny páry řetězců/řetězců, všechny páry celých čísel/řetězců, nebo všechny páry řetězců/celých čísel. Pokud se pokusíte přidat mapování, které se liší od ostatních již v kolekci, InvalidOperationException vyvolá se chyba.
Platí pro
Add(String, String)
Vytvoří novou SqlBulkCopyColumnMapping a přidá ji do kolekce a pomocí názvů sloupců určí zdrojové i cílové sloupce.
public:
Microsoft::Data::SqlClient::SqlBulkCopyColumnMapping ^ Add(System::String ^ sourceColumn, System::String ^ destinationColumn);
public Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping Add(string sourceColumn, string destinationColumn);
member this.Add : string * string -> Microsoft.Data.SqlClient.SqlBulkCopyColumnMapping
Public Function Add (sourceColumn As String, destinationColumn As String) As SqlBulkCopyColumnMapping
Parametry
- sourceColumn
- String
Název zdrojového sloupce v rámci zdroje dat.
- destinationColumn
- String
Název cílového sloupce v cílové tabulce.
Návraty
Mapování sloupců.
Příklady
Následující příklad hromadně kopí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řadové pozice se neshodují. Kód vytvoří SqlBulkCopyColumnMapping objekt zadáním názvů sloupců.
Important
Tento příklad se nespustí, pokud jste nevytvořili pracovní tabulky, jak je popsáno v Příklad nastavení 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é tabulky ve stejné instanci SQL Serveru, je jednodušší a rychlejší použít příkaz Transact-SQL INSERT … SELECT ke zkopírování dat.
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í v kolekci musí být jednotná: buď všechny páry celých čísel/celých čísel, všechny páry řetězců/řetězců, všechny páry celých čísel/řetězců, nebo všechny páry řetězců/celých čísel. Pokud se pokusíte přidat mapování, které se liší od ostatních již v kolekci, InvalidOperationException vyvolá se chyba.