Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Класс 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]