SqlBulkCopyColumnMappingCollection Třída
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í.
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. |