Partilhar via


Exemplo de configuração de cópia em massa

Baixar ADO.NET

A SqlBulkCopy classe pode ser usada para gravar dados somente em tabelas do SQL Server. Os exemplos de código mostrados neste tópico usam o banco de dados de exemplo 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 tabela AdventureWorksProduction.Products . Em exemplos de código que usam essas tabelas, os dados são adicionados da tabela Production.Products a uma dessas tabelas de exemplo. A tabela BulkCopyDemoDifferentColumns é usada quando o exemplo ilustra como mapear colunas dos dados de origem para a tabela de destino; BulkCopyDemoMatchingColumns é usado para a maioria dos outros exemplos.

Alguns dos exemplos de código demonstram como usar uma SqlBulkCopy classe para gravar em várias tabelas. Para esses exemplos, as tabelas BulkCopyDemoOrderHeader e BulkCopyDemoOrderDetail são usadas como as tabelas de destino. Essas tabelas são baseadas nas tabelas Sales.SalesOrderHeader e Sales.SalesOrderDetail no AdventureWorks.

Observação

Os exemplos de código SqlBulkCopy são fornecidos para demonstrar a sintaxe para usar somente SqlBulkCopy . Se as tabelas de origem e destino estiverem localizadas na mesma instância do SQL Server, será mais fácil e rápido usar uma instrução Transact-SQL INSERT ... SELECT para copiar os dados.

Configuração da tabela

Para criar as tabelas necessárias para que os exemplos de código sejam executados corretamente, você deve executar as instruções Transact-SQL a seguir em um banco de dados do SQL Server.

USE AdventureWorks2022;
GO
  
DROP TABLE IF EXISTS [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]  
  
DROP TABLE IF EXISTS [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]  
  
DROP TABLE IF EXISTS [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]  
  
DROP TABLE IF EXISTS [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]  

Próximos passos