Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az SqlBulkCopy osztály csak SQL Server-táblákba írhat adatokat. Az ebben a témakörben bemutatott kódminták a SQL Server mintaadatbázist, az AdventureWorks adatbázist használják, AdventureWorks. A meglévő táblakódminták módosításának elkerülése érdekében írjon adatokat azokra a táblákra, amelyeket először létre kell hoznia.
A BulkCopyDemoMatchingColumns és BulkCopyDemoDifferentColumns táblák is a AdventureWorksProduction.Products táblán alapulnak. Az ezeket a táblákat használó kódmintákban a rendszer adatokat ad hozzá a Production.Products táblából a mintatáblák egyikéhez. A BulkCopyDemoDifferentColumns rendszer akkor használja a táblázatot, ha a minta bemutatja, hogyan képezhet le oszlopokat a forrásadatokból a céltáblába; BulkCopyDemoMatchingColumns a legtöbb más mintához használatos.
Néhány kódminta bemutatja, hogyan lehet egy SqlBulkCopy osztályt több táblába írni. Ezeknél a mintáknál a BulkCopyDemoOrderHeader és BulkCopyDemoOrderDetail táblák lesznek a céltáblák. Ezek a táblák a AdventureWorks-ben található Sales.SalesOrderHeader és Sales.SalesOrderDetail tábláin alapulnak.
Megjegyzés
A SqlBulkCopy kódminták a szintaxisát mutatják be. Ha a forrás- és céltáblák ugyanabban a SQL Server példányban találhatók, használjon Transact-SQL (T-SQL) INSERT ... SELECT utasítást a gyorsabb másoláshoz.
Tábla beállítása
A kódminták megfelelő futtatásához szükséges táblák létrehozásához az alábbi Transact-SQL-utasításokat kell futtatnia egy SQL Server-adatbázisban.
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]