Поделиться через


Пример настройки массового копирования

Скачивание ADO.NET

Класс SqlBulkCopy можно использовать для записи данных только в таблицы SQL Server. В примерах кода, показанных в этом разделе, используется пример базы данных SQL Server AdventureWorks. Чтобы не допустить изменения существующих таблиц, примеры кода записывают данные в таблицы, которые сначала необходимо создать.

Таблицы BulkCopyDemoMatchingColumns и BulkCopyDemoDemoDifferentColumns основаны на таблице AdventureWorksProduction.Products . В примерах кода, использующих эти таблицы, данные добавляются из таблицы Production.Products в одну из этих примеров таблиц. Таблица BulkCopyDemoDifferentColumns используется, когда в примере показано, как сопоставить столбцы из исходных данных с целевой таблицей; BulkCopyDemoMatchingColumns используется для большинства других примеров.

Некоторые примеры кода демонстрируют использование одного класса SqlBulkCopy для записи в несколько таблиц. Для этих примеров таблицы BulkCopyDemoOrderHeader и BulkCopyDemoOrderDetail используются в качестве целевых таблиц. Эти таблицы основаны на таблицах Sales.SalesOrderHeader и Sales.SalesOrderDetail в AdventureWorks.

Примечание.

Примеры кода SqlBulkCopy предоставляются для демонстрации синтаксиса только для использования SqlBulkCopy . Если исходная и целевая таблицы расположены в одном экземпляре SQL Server, будет проще и быстрее использовать инструкцию Transact-SQL INSERT … SELECT для копирования данных.

Настройка таблицы

Чтобы создать таблицы, необходимые для правильной работы примеров кода, выполните следующие инструкции Transact-SQL в базе данных 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]  

Следующие шаги