Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klasa SqlBulkCopy służy do zapisywania danych tylko w tabelach SQL Server. Przykłady kodu pokazane w tym temacie używają przykładowej bazy danych 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 AdventureWorksProduction.Products tabeli. W przykładach kodu korzystających z tych tabel dane są dodawane z Production.Products tabeli 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ą; BulkCopyDemoMatchingColumns jest używana w przypadku 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 pliku AdventureWorks.
Uwaga
Przykłady SqlBulkCopy kodu pokazują jego składnię. Jeśli tabele źródłowe i docelowe znajdują się w tym samym wystąpieniu SQL Server, użyj instrukcji Transact-SQL (T-SQL) INSERT ... SELECT w celu szybszego kopiowania.
Konfiguracja tabeli
Aby utworzyć tabele niezbędne do poprawnego uruchomienia przykładów kodu, należy uruchomić następujące instrukcje języka Transact-SQL w bazie danych programu SQL Server.
USE AdventureWorks
IF EXISTS (SELECT * FROM dbo.sysobjects
WHERE id = object_id(N'[dbo].[BulkCopyDemoMatchingColumns]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [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]
IF EXISTS (SELECT * FROM dbo.sysobjects
WHERE id = object_id(N'[dbo].[BulkCopyDemoDifferentColumns]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [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]
IF EXISTS (SELECT * FROM dbo.sysobjects
WHERE id = object_id(N'[dbo].[BulkCopyDemoOrderHeader]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [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]
IF EXISTS (SELECT * FROM dbo.sysobjects
WHERE id = object_id(N'[dbo].[BulkCopyDemoOrderDetail]')
AND OBJECTPROPERTY(id, N'IsUserTable') = 1)
DROP TABLE [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]