CREATE TABLE [dbo].[Customer]( Id bigint IDENTITY(1,1) NOT NULL, Name [nvarchar](60) NOT NULL, BirthDate [datetime] NOT NULL, Height INT NULL CONSTRAINT [PK_Customer] PRIMARY KEY CLUSTERED ( [ID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
C# İle Kullanımı
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Diagnostics; namespace SqlBulkCopyDemo { public class Customer { public long Id { get; set; } public string Name { get; set; } public DateTime BirthDate { get; set; } public int Height { get; set; } public static IEnumerable<Customer> GenerateExampleData(int count) { int i = 0; while (i++ < count) { yield return new Customer() { Name = Guid.NewGuid().ToString(), BirthDate = DateTime.Today.AddDays(-1 * (i % (365 * 50))), Height = new Random(i).Next(150, 190) }; } } } class Program { static void Main(string[] args) { var customerCount = 5000000; var stopWatch = new Stopwatch(); Console.WriteLine("Generating example data"); stopWatch.Start(); var dt = new DataTable(); //Write Destination Column Names dt.TableName = "Customer"; dt.Columns.Add("Name", typeof(string)); dt.Columns.Add("BirthDate", typeof(DateTime)); dt.Columns.Add("Height", typeof(int)); foreach (var customer in Customer.GenerateExampleData(customerCount)) { dt.Rows.Add(customer.Name, customer.BirthDate, customer.Height); } Console.WriteLine($"Data generated {stopWatch.Elapsed.ToString()}"); Console.WriteLine($"SqlBulkCopy starting "); stopWatch.Restart(); using (var con = new SqlConnection("Server=xxx;Database=xxx;User Id=xxx;Password=xxx;")) { using (var bulkCopy = new SqlBulkCopy(con, SqlBulkCopyOptions.TableLock, null)) { bulkCopy.DestinationTableName = "Customer"; bulkCopy.ColumnMappings.Add("Name", "Name"); bulkCopy.ColumnMappings.Add("BirthDate", "BirthDate"); bulkCopy.ColumnMappings.Add("Height", "Height"); bulkCopy.EnableStreaming = true; bulkCopy.BatchSize = 10000; bulkCopy.NotifyAfter = 1000; bulkCopy.SqlRowsCopied += (sender, e) => Console.WriteLine("RowsCopied: " + e.RowsCopied); var rows = new DataRow[dt.Rows.Count]; dt.Rows.CopyTo(rows, 0); con.Open(); bulkCopy.WriteToServer(rows); } } stopWatch.Stop(); Console.WriteLine($"Written to Database: {stopWatch.Elapsed.ToString()}"); Console.ReadKey(); } } }