Dela via


Installation av masskopieringsexempel

Klassen SqlBulkCopy kan endast användas för att skriva data till SQL Server-tabeller. Kodexemplen som visas i det här avsnittet använder SQL Server-exempeldatabasen AdventureWorks. För att undvika att ändra befintliga tabellkodexempel skriver du data till tabeller som du måste skapa först.

Tabellerna BulkCopyDemoMatchingColumns och BulkCopyDemoDifferentColumns baseras båda på tabellen AdventureWorks Production.Products . I kodexempel som använder dessa tabeller läggs data till från tabellen Production.Products i någon av dessa exempeltabeller. Tabellen BulkCopyDemoDifferentColumns används när exemplet visar hur du mappar kolumner från källdata till måltabellen. BulkCopyDemoMatchingColumns används för de flesta andra exempel.

Några av kodexemplen visar hur du använder en SqlBulkCopy klass för att skriva till flera tabeller. För dessa exempel används tabellerna BulkCopyDemoOrderHeader och BulkCopyDemoOrderDetail som måltabeller. Dessa tabeller baseras på tabellerna Sales.SalesOrderHeader och Sales.SalesOrderDetail i AdventureWorks.

Kommentar

SqlBulkCopy-kodexemplen tillhandahålls för att demonstrera syntaxen för att endast använda SqlBulkCopy. Om käll- och måltabellerna finns i samma SQL Server-instans är det enklare och snabbare att använda en Transact-SQL-instruktion INSERT … SELECT för att kopiera data.

Tabellkonfiguration

Om du vill skapa de tabeller som krävs för att kodexemplen ska köras korrekt måste du köra följande Transact-SQL-instruktioner i en SQL Server-databas.

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]  

Se även