Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klasa SqlBulkCopy może służyć do zapisywania danych tylko w tabelach SQL Server. Przykłady kodu pokazane w tym temacie używają przykładowej bazy danych programu SQL Server AdventureWorks. Aby uniknąć zmiany istniejących przykładów kodu tabel, należy najpierw zapisać dane w tabelach, które należy utworzyć.
Tabele BulkCopyDemoMatchingColumns i BulkCopyDemoDifferentColumns są oparte na tabeli AdventureWorksProduction.Products . W przykładach kodu korzystających z tych tabel dane są dodawane z tabeli Production.Products do jednej z tych przykładowych tabel. Tabela BulkCopyDemoDifferentColumns jest używana, gdy w przykładzie pokazano, jak mapować kolumny z danych źródłowych na tabelę docelową; Funkcja BulkCopyDemoMatchingColumns jest używana dla większości innych przykładów.
Kilka przykładów kodu pokazuje, jak używać jednej SqlBulkCopy klasy do zapisywania w wielu tabelach. W przypadku tych przykładów tabele BulkCopyDemoOrderHeader i BulkCopyDemoOrderDetail są używane jako tabele docelowe. Te tabele są oparte na tabelach Sales.SalesOrderHeader i Sales.SalesOrderDetail w adventureWorks.
Uwaga / Notatka
Przykłady kodu SqlBulkCopy są udostępniane w celu zademonstrowania składni tylko przy użyciu narzędzia SqlBulkCopy . Jeśli tabele źródłowe i docelowe znajdują się w tym samym wystąpieniu programu SQL Server, łatwiej i szybciej jest użyć instrukcji Transact-SQL INSERT ... SELECT do skopiowania danych.
Konfiguracja tabeli
Aby utworzyć tabele niezbędne do poprawnego uruchomienia przykładów kodu, należy uruchomić następujące instrukcje Transact-SQL w bazie danych programu 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]