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, AdventureWorksSQL Server. Aby nedošlo ke změně existujících ukázek kódu tabulek, nejprve vytvořte tabulky a poté do nich zapisujte data.

Tabulky BulkCopyDemoDifferentColumns a BulkCopyDemoMatchingColumns jsou obě založené na tabulce AdventureWorksProduction.Products. V ukázkách kódu, které tyto tabulky používají, se data přidají z Production.Products tabulky 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 na cílovou tabulku. BulkCopyDemoMatchingColumns Používá se 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 tabulky BulkCopyDemoOrderHeader a BulkCopyDemoOrderDetail používají jako cílové tabulky. Tyto tabulky jsou založeny na Sales.SalesOrderHeader a Sales.SalesOrderDetail tabulkách v AdventureWorks.

Poznámka:

Ukázky SqlBulkCopy kódu demonstrují jeho syntaxi. Pokud jsou zdrojové a cílové tabulky ve stejné instanci SQL Server, použijte příkaz Transact-SQL (T-SQL) INSERT ... SELECT pro rychlejší kopírování.

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é