Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Třídu SqlBulkCopy lze použít k zápisu dat pouze do tabulek SQL Serveru. Ukázky kódu uvedené v tomto tématu používají ukázkovou databázi SQL Serveru AdventureWorks. Aby nedošlo k úpravám stávajících ukázek kódu tabulek, zapisujte data do tabulek, které musíte nejprve vytvořit.
Tabulky BulkCopyDemoMatchingColumns a BulkCopyDemoDifferentColumns jsou založené na tabulce AdventureWorksProduction.Products . V ukázkách kódu, které tyto tabulky používají, se data přidají z tabulky Production.Products do jedné z těchto ukázkových tabulek. Tabulka BulkCopyDemoDifferentColumns se používá, když ukázka ukazuje, jak mapovat sloupce ze zdrojových dat do cílové tabulky; BulkCopyDemoMatchingColumns se používá pro většinu ostatních ukázek.
Několik ukázek kódu ukazuje, jak použít jednu SqlBulkCopy třídu k zápisu do více tabulek. Pro tyto ukázky se jako cílové tabulky používají tabulky BulkCopyDemoOrderHeader a BulkCopyDemoOrderDetail . Tyto tabulky jsou založené na tabulkách Sales.SalesOrderHeader a Sales.SalesOrderDetail v AdventureWorks.
Poznámka:
Ukázky kódu SqlBulkCopy jsou k dispozici k předvedení syntaxe pouze pro použití sqlBulkCopy . Pokud jsou zdrojové a cílové tabulky umístěny ve stejné instanci SQL Serveru, je jednodušší a rychlejší použít příkaz Transact-SQL INSERT ... SELECT ke zkopírování dat.
Nastavení tabulky
Pokud chcete vytvořit tabulky potřebné ke správnému spuštění ukázek kódu, musíte v databázi SQL Serveru spustit následující příkazy Transact-SQL.
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]