Konfiguracja przykładu kopiowania zbiorczego
Klasa może służyć do zapisywania SqlBulkCopy danych tylko w tabelach programu SQL Server. Przykłady kodu pokazane w tym temacie używają przykładowej bazy danych programu 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 tabeli AdventureWorks Production.Products. W przykładach kodu korzystających z tych tabel dane są dodawane z tabeli Production.Products 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ą; Funkcja BulkCopyDemoMatchingColumns jest używana dla 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 adventureWorks.
Uwaga
Przykłady kodu SqlBulkCopy są udostępniane w celu zademonstrowania składni tylko przy użyciu narzędzia SqlBulkCopy. Jeśli tabele źródłowe i docelowe znajdują się w tym samym wystąpieniu programu SQL Server, łatwiej i szybciej jest użyć instrukcji Języka Transact-SQL INSERT … SELECT
do skopiowania danych.
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]