Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс 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]