Voorbeeld van bulkkopie kopiëren
De SqlBulkCopy klasse kan worden gebruikt om alleen gegevens naar SQL Server-tabellen te schrijven. De codevoorbeelden die in dit onderwerp worden weergegeven, gebruiken de SQL Server-voorbeelddatabase AdventureWorks. Om te voorkomen dat u de bestaande codevoorbeelden van tabellen wijzigt, worden gegevens naar tabellen geschreven die u eerst moet maken.
De tabellen BulkCopyDemoMatchingColumns en BulkCopyDemoDifferentColumns zijn beide gebaseerd op de tabel AdventureWorks Production.Products . In codevoorbeelden die deze tabellen gebruiken, worden gegevens uit de tabel Production.Products toegevoegd aan een van deze voorbeeldtabellen. De tabel BulkCopyDemoDifferentColumns wordt gebruikt wanneer in het voorbeeld wordt geïllustreerd hoe kolommen van de brongegevens worden toegewezen aan de doeltabel; BulkCopyDemoMatchingColumns wordt gebruikt voor de meeste andere voorbeelden.
Enkele codevoorbeelden laten zien hoe u één SqlBulkCopy klasse gebruikt om naar meerdere tabellen te schrijven. Voor deze voorbeelden worden de tabellen BulkCopyDemoOrderHeader en BulkCopyDemoOrderDetail gebruikt als doeltabellen. Deze tabellen zijn gebaseerd op de tabellen Sales.SalesOrderHeader en Sales.SalesOrderDetail in AdventureWorks.
Notitie
De sqlBulkCopy-codevoorbeelden worden verstrekt om de syntaxis voor het gebruik van SqlBulkCopy alleen te demonstreren. Als de bron- en doeltabellen zich in hetzelfde SQL Server-exemplaar bevinden, is het eenvoudiger en sneller om een Transact-SQL-instructie INSERT … SELECT
te gebruiken om de gegevens te kopiëren.
Tabelinstellingen
Als u de tabellen wilt maken die nodig zijn om de codevoorbeelden correct uit te voeren, moet u de volgende Transact-SQL-instructies uitvoeren in een SQL Server-database.
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]