// @nuget: Z.BulkOperations
using System;
using System.Data;
using System.Data.SqlClient;
using Z.BulkOperations;
public class Program
{
public static void Main()
CreateTable();
var dt = GetDataToInsert();
using(var connection = new SqlConnection(FiddleHelper.GetConnectionStringSqlServer()))
connection.Open();
using (var sqlBulk = new SqlBulkCopy(connection))
sqlBulk.DestinationTableName = "Customers";
sqlBulk.WriteToServer(dt);
}
var data = GetData();
FiddleHelper.WriteTable(data);
public static DataTable GetData()
var dt = new DataTable();
var command = connection.CreateCommand();
command.CommandText = "SELECT * FROM Customers";
using(var adapter = new SqlDataAdapter(command))
adapter.Fill(dt);
dt.TableName = "Total: " + dt.Rows.Count + " rows";
return dt;
public static DataTable GetDataToInsert()
dt.Columns.Add("CustomerID", typeof(int));
dt.Columns.Add("Name");
dt.Columns.Add("City");
for(int i = 0; i < 2000; i++)
dt.Rows.Add(i, "Name_" + i, "City_" + i);
public static void CreateTable()
command.CommandText = @"
CREATE TABLE Customers
(
CustomerID INT IDENTITY(1, 1),
Name VARCHAR(255),
City VARCHAR(255)
)
";
command.ExecuteNonQuery();