Konfiguracja przykładu kopiowania zbiorczego

Klasa SqlBulkCopy służy do zapisywania danych tylko w tabelach SQL Server. Przykłady kodu pokazane w tym temacie używają przykładowej bazy danych SQL Server, AdventureWorks. Aby uniknąć zmiany istniejących przykładów kodu tabel, należy najpierw zapisać dane w tabelach, które należy utworzyć.

Tabele BulkCopyDemoMatchingColumns i BulkCopyDemoDifferentColumns są oparte na AdventureWorksProduction.Products tabeli. W przykładach kodu korzystających z tych tabel dane są dodawane z Production.Products tabeli do jednej z tych przykładowych tabel. Tabela BulkCopyDemoDifferentColumns jest używana, gdy w przykładzie pokazano, jak mapować kolumny z danych źródłowych na tabelę docelową; BulkCopyDemoMatchingColumns jest używana w przypadku większości innych przykładów.

Kilka przykładów kodu pokazuje, jak używać jednej SqlBulkCopy klasy do zapisywania w wielu tabelach. W przypadku tych przykładów tabele BulkCopyDemoOrderHeader i BulkCopyDemoOrderDetail są używane jako tabele docelowe. Te tabele są oparte na tabelach Sales.SalesOrderHeader i Sales.SalesOrderDetail w pliku AdventureWorks.

Uwaga

Przykłady SqlBulkCopy kodu pokazują jego składnię. Jeśli tabele źródłowe i docelowe znajdują się w tym samym wystąpieniu SQL Server, użyj instrukcji Transact-SQL (T-SQL) INSERT ... SELECT w celu szybszego kopiowania.

Konfiguracja tabeli

Aby utworzyć tabele niezbędne do poprawnego uruchomienia przykładów kodu, należy uruchomić następujące instrukcje języka Transact-SQL w bazie danych programu SQL Server.

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]

Zobacz też