Penyiapan Contoh Penyalinan Massal

Kelas SqlBulkCopy dapat digunakan untuk menulis data hanya ke tabel SQL Server. Sampel kode yang ditampilkan dalam topik ini menggunakan database sampel SQL Server, AdventureWorks. Untuk menghindari terubahnya sampel kode tabel yang ada, tulis data ke tabel yang harus Anda buat terlebih dahulu.

Baik tabel BulkCopyDemoMatchingColumns maupun BulkCopyDemoDifferentColumns didasarkan pada tabel Production.ProductsAdventureWorks. Dalam sampel kode yang menggunakan tabel ini, data ditambahkan dari tabel Production.Products ke salah satu tabel sampel ini. Tabel BulkCopyDemoDifferentColumns digunakan saat sampel menggambarkan cara memetakan kolom dari data sumber ke tabel tujuan; BulkCopyDemoMatchingColumns digunakan untuk sebagian besar sampel lainnya.

Beberapa sampel kode menunjukkan cara menggunakan satu kelas SqlBulkCopy untuk menulis ke beberapa tabel. Untuk sampel ini, tabel BulkCopyDemoOrderHeader dan BulkCopyDemoOrderDetail digunakan sebagai tabel tujuan. Tabel ini didasarkan pada tabel Sales.SalesOrderHeader dan Sales.SalesOrderDetail di AdventureWorks.

Catatan

Sampel kode SqlBulkCopy disediakan guna menunjukkan sintaksis untuk menggunakan SqlBulkCopy saja. Jika tabel sumber dan tujuan terletak di instans SQL Server yang sama, akan lebih mudah dan lebih cepat untuk menggunakan pernyataan INSERT … SELECT Transact-SQL untuk menyalin data.

Penyiapan Tabel

Untuk membuat tabel yang diperlukan agar sampel kode berjalan dengan benar, Anda harus menjalankan pernyataan Transact-SQL berikut dalam database 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]  

Lihat juga