Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A SqlBulkCopy classe pode ser usada para gravar dados somente em tabelas do SQL Server. Os exemplos de código apresentados neste tópico utilizam a base de dados de exemplos do SQL Server, AdventureWorks. Para evitar alterar as tabelas existentes, exemplos de código gravam dados em tabelas que você deve criar primeiro.
As tabelas BulkCopyDemoMatchingColumns e BulkCopyDemoDifferentColumns são ambas baseadas na AdventureWorksProduction.Products tabela. Em exemplos de código que utilizam estas tabelas, os dados são adicionados da Production.Products tabela a uma destas tabelas de exemplo. A BulkCopyDemoDifferentColumns tabela é usada quando o exemplo ilustra como mapear colunas dos dados de origem para a tabela de destino; BulkCopyDemoMatchingColumns é usada para a maioria das outras amostras.
Alguns dos exemplos de código demonstram como usar uma SqlBulkCopy classe para gravar em várias tabelas. Para estas amostras, as BulkCopyDemoOrderHeader tabelas e BulkCopyDemoOrderDetail são usadas como tabelas de destino. Estas tabelas baseiam-se nas tabelas Sales.SalesOrderHeader e Sales.SalesOrderDetail em AdventureWorks.
Nota
Os SqlBulkCopy exemplos de código demonstram a sua sintaxe. Se as tabelas de origem e destino estiverem na mesma SQL Server instância, use uma instrução Transact-SQL (T-SQL) INSERT ... SELECT para uma cópia mais rápida.
Configuração da tabela
Para criar as tabelas necessárias para que os exemplos de código sejam executados corretamente, você deve executar as seguintes instruções Transact-SQL em um banco de dados do 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]