SQL Bulk Copy is a high-performance method to insert large amount of data into a SQL Server database. Here's how to use SqlBulkCopy to insert data into a SQL Server table from a C# application:
using System.Data.SqlClient; // Define a connection string to the SQL Server database string connectionString = "Data Source=myServerAddress;Initial Catalog=myDataBase;Integrated Security=True"; // Define a SQL query to select the data to insert string query = "SELECT * FROM myTable"; // Create a SqlConnection object using the connection string using (SqlConnection connection = new SqlConnection(connectionString)) { // Open the connection connection.Open(); // Create a SqlCommand object using the query and the connection using (SqlCommand command = new SqlCommand(query, connection)) { // Execute the command and create a SqlDataReader object using (SqlDataReader reader = command.ExecuteReader()) { // Create a SqlBulkCopy object using the connection using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { // Set the destination table name bulkCopy.DestinationTableName = "myDestinationTable"; // Write the data to the destination table bulkCopy.WriteToServer(reader); } } } } In this example, a SqlConnection object is created using the connection string to the SQL Server database. The query string defines a SQL query to select the data to insert.
A SqlCommand object is created using the query string and the SqlConnection object. The ExecuteReader method is called to execute the command and create a SqlDataReader object.
A SqlBulkCopy object is created using the SqlConnection object. The DestinationTableName property is set to the name of the destination table in the database. The WriteToServer method is called to write the data to the destination table.
Note that SqlBulkCopy is a high-performance method for inserting large amounts of data into a SQL Server database. However, it has some limitations, such as not supporting complex data types or identity columns. You should test and optimize your code to ensure that it performs well for your specific data and scenario.
"C# SQL Bulk Copy from DataTable"
SqlBulkCopy class.DataTable dataTable = GetDataTable(); // Replace with your DataTable string connectionString = "YourConnectionString"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "YourDestinationTable"; bulkCopy.WriteToServer(dataTable); } } "C# SQL Bulk Copy with Column Mapping"
DataTable dataTable = GetDataTable(); // Replace with your DataTable string connectionString = "YourConnectionString"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "YourDestinationTable"; // Map DataTable columns to SQL Server columns bulkCopy.ColumnMappings.Add("SourceColumn1", "DestinationColumn1"); bulkCopy.ColumnMappings.Add("SourceColumn2", "DestinationColumn2"); bulkCopy.WriteToServer(dataTable); } } "C# SQL Bulk Copy with Batch Size"
BatchSize property.DataTable dataTable = GetDataTable(); // Replace with your DataTable string connectionString = "YourConnectionString"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "YourDestinationTable"; bulkCopy.BatchSize = 1000; // Set your desired batch size bulkCopy.WriteToServer(dataTable); } } "C# SQL Bulk Copy with NotifyAfter"
NotifyAfter property with SQL Bulk Copy in C# to receive notifications after a specific number of rows have been processed. This code snippet demonstrates its usage.DataTable dataTable = GetDataTable(); // Replace with your DataTable string connectionString = "YourConnectionString"; int notifyAfterRows = 1000; // Set the desired number of rows using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "YourDestinationTable"; bulkCopy.NotifyAfter = notifyAfterRows; bulkCopy.SqlRowsCopied += (sender, e) => Console.WriteLine($"{e.RowsCopied} rows copied."); bulkCopy.WriteToServer(dataTable); } } "C# SQL Bulk Copy with Timeout"
BulkCopyTimeout property.DataTable dataTable = GetDataTable(); // Replace with your DataTable string connectionString = "YourConnectionString"; int bulkCopyTimeoutSeconds = 60; // Set your desired timeout in seconds using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "YourDestinationTable"; bulkCopy.BulkCopyTimeout = bulkCopyTimeoutSeconds; bulkCopy.WriteToServer(dataTable); } } "C# SQL Bulk Copy with Custom Mapping"
DataTable dataTable = GetDataTable(); // Replace with your DataTable string connectionString = "YourConnectionString"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "YourDestinationTable"; bulkCopy.ColumnMappings.Add(new SqlBulkCopyColumnMapping("SourceColumn", "DestinationColumn", CustomMappingFunction)); bulkCopy.WriteToServer(dataTable); } } private static string CustomMappingFunction(DataRow row) { // Implement your custom mapping logic return row.Field<string>("SourceColumn"); } "C# SQL Bulk Copy with Identity Column Handling"
SqlBulkCopyOptions and KeepIdentity property.DataTable dataTable = GetDataTable(); // Replace with your DataTable string connectionString = "YourConnectionString"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection, SqlBulkCopyOptions.KeepIdentity)) { bulkCopy.DestinationTableName = "YourDestinationTable"; bulkCopy.WriteToServer(dataTable); } } "C# SQL Bulk Copy with Data Conversion"
SqlRowsCopied event. This code snippet demonstrates custom data conversion logic.DataTable dataTable = GetDataTable(); // Replace with your DataTable string connectionString = "YourConnectionString"; using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); using (SqlBulkCopy bulkCopy = new SqlBulkCopy(connection)) { bulkCopy.DestinationTableName = "YourDestinationTable"; bulkCopy.SqlRowsCopied += (sender, e) => CustomDataConversion(e, dataTable); bulkCopy.WriteToServer(dataTable); } } private static void CustomDataConversion(SqlRowsCopiedEventArgs e, DataTable dataTable) { // Implement your custom data conversion logic Console.WriteLine($"{e.RowsCopied} rows copied. Custom conversion logic applied."); } interactive keyframe constraints tomcat9 react-server protected qtgui google-finance browser-history modelmapper