Příklad nastavení hromadného kopírování

Třídu SqlBulkCopy lze použít k zápisu dat pouze do tabulek SQL Serveru. Ukázky kódu uvedené v tomto tématu používají ukázkovou databázi SQL Serveru AdventureWorks. Aby se zabránilo změnám existujících ukázek kódu tabulek, zapisují data do tabulek, které musíte vytvořit jako první.

Tabulky BulkCopyDemoMatchingColumns a BulkCopyDemoDifferentColumns jsou založené na tabulce AdventureWorksProduction.Products . V ukázkách kódu, které tyto tabulky používají, se data přidají z tabulky Production.Products do jedné z těchto ukázkových tabulek. Tabulka BulkCopyDemoDifferentColumns se používá, když ukázka ukazuje, jak mapovat sloupce ze zdrojových dat do cílové tabulky; BulkCopyDemoMatchingColumns se používá pro většinu ostatních ukázek.

Několik ukázek kódu ukazuje, jak použít jednu SqlBulkCopy třídu k zápisu do více tabulek. Pro tyto ukázky se jako cílové tabulky používají tabulky BulkCopyDemoOrderHeader a BulkCopyDemoOrderDetail . Tyto tabulky jsou založené na tabulkách Sales.SalesOrderHeader a Sales.SalesOrderDetail v AdventureWorks.

Poznámka:

Ukázky kódu SqlBulkCopy jsou k dispozici k předvedení syntaxe pouze pro použití sqlBulkCopy . Pokud jsou zdrojové a cílové tabulky umístěny ve stejné instanci SQL Serveru, je jednodušší a rychlejší použít příkaz Jazyka Transact-SQL INSERT … SELECT ke kopírování dat.

Nastavení tabulky

Pokud chcete vytvořit tabulky potřebné ke správnému spuštění ukázek kódu, musíte v databázi SQL Serveru spustit následující příkazy jazyka Transact-SQL.

USE AdventureWorks  
  
IF EXISTS (SELECT * FROM dbo.sysobjects
 WHERE id = object_id(N'[dbo].[BulkCopyDemoMatchingColumns]')  
 AND OBJECTPROPERTY(id, N'IsUserTable') = 1)  
    DROP TABLE [dbo].[BulkCopyDemoMatchingColumns]  
  
CREATE TABLE [dbo].[BulkCopyDemoMatchingColumns]([ProductID] [int] IDENTITY(1,1) NOT NULL,  
    [Name] [nvarchar](50) NOT NULL,  
    [ProductNumber] [nvarchar](25) NOT NULL,  
 CONSTRAINT [PK_ProductID] PRIMARY KEY CLUSTERED  
(  
    [ProductID] ASC  
) ON [PRIMARY]) ON [PRIMARY]  
  
IF EXISTS (SELECT * FROM dbo.sysobjects
 WHERE id = object_id(N'[dbo].[BulkCopyDemoDifferentColumns]')  
 AND OBJECTPROPERTY(id, N'IsUserTable') = 1)  
    DROP TABLE [dbo].[BulkCopyDemoDifferentColumns]  
  
CREATE TABLE [dbo].[BulkCopyDemoDifferentColumns]([ProdID] [int] IDENTITY(1,1) NOT NULL,  
    [ProdNum] [nvarchar](25) NOT NULL,  
    [ProdName] [nvarchar](50) NOT NULL,  
 CONSTRAINT [PK_ProdID] PRIMARY KEY CLUSTERED  
(  
    [ProdID] ASC  
) ON [PRIMARY]) ON [PRIMARY]  
  
IF EXISTS (SELECT * FROM dbo.sysobjects
 WHERE id = object_id(N'[dbo].[BulkCopyDemoOrderHeader]')  
 AND OBJECTPROPERTY(id, N'IsUserTable') = 1)  
    DROP TABLE [dbo].[BulkCopyDemoOrderHeader]  
  
CREATE TABLE [dbo].[BulkCopyDemoOrderHeader]([SalesOrderID] [int] IDENTITY(1,1) NOT NULL,  
    [OrderDate] [datetime] NOT NULL,  
    [AccountNumber] [nvarchar](15) NULL,  
 CONSTRAINT [PK_SalesOrderID] PRIMARY KEY CLUSTERED  
(  
    [SalesOrderID] ASC  
) ON [PRIMARY]) ON [PRIMARY]  
  
IF EXISTS (SELECT * FROM dbo.sysobjects
 WHERE id = object_id(N'[dbo].[BulkCopyDemoOrderDetail]')  
 AND OBJECTPROPERTY(id, N'IsUserTable') = 1)  
    DROP TABLE [dbo].[BulkCopyDemoOrderDetail]  
  
CREATE TABLE [dbo].[BulkCopyDemoOrderDetail]([SalesOrderID] [int] NOT NULL,  
    [SalesOrderDetailID] [int] NOT NULL,  
    [OrderQty] [smallint] NOT NULL,  
    [ProductID] [int] NOT NULL,  
    [UnitPrice] [money] NOT NULL,  
 CONSTRAINT [PK_LineNumber] PRIMARY KEY CLUSTERED  
(  
    [SalesOrderID] ASC,  
    [SalesOrderDetailID] ASC  
) ON [PRIMARY]) ON [PRIMARY]  

Viz také