Archive
C# – SQL – Bulk Insert records from Data Table and CSV
In my previous article I provided the steps to update records in single transaction using SQL “Table-Valued Parameter Types”.
In this article, lets see an easy way to bulk insert the records using SQLBulkCopy
What is SQLBulkCopy:
- SQLBulkCopy class comes with ‘System.Data’ namespace and can be used to write/Insert data to SQL Server tables.
- Though there are other ways to load data into a SQL Server table (i.e., INSERT statements, for example) but ‘SQLBulkCopy’ offers a significant performance advantage.
Below are the steps to use SQLBulkCopy with the combination of ‘Data Table’
Steps:
To simplify the explanation, I am taking a ‘Student’ table with 3 columns.
- Create a ‘Student’ table.
- In C# console application, prepare a ‘Data Table’ with the structure similar to ‘Student’ SQL table.
tableStudents = new DataTable(“Student”);
tableStudents.Columns.Add(“StudentID”, typeof(string));
tableStudents.Columns.Add(“StudentName”, typeof(string));
tableStudents.Columns.Add(“City”, typeof(string));// Add ‘Student’ data as Rows to the Data Table
DataRow rowStudent = tableStudents.NewRow();
rowStudent[“StudentID”] = “RJ001”
rowStudent[“StudentName”] = “Rajeev”;
rowStudent[“City”] = “Hyd”;//Add the Data Row to Table
tableStudents.Rows.Add(rowStudent);
- Instantiate and execute the ‘SQLBulkCopy’ by passing the Data Table
using (SqlBulkCopy bulkCopy = new SqlBulkCopy({SQLConnection}, SqlBulkCopyOptions.TableLock | SqlBulkCopyOptions.FireTriggers | SqlBulkCopyOptions.UseInternalTransaction, null))
{
bulkCopy.DestinationTableName = “Student“; // Your SQL Table name//Optional mappings. Not required, if your ‘Data Table’ column names match with ‘SQL Table’ column names
bulkCopy.ColumnMappings.Add(“StudentID”, “StudentID”);
bulkCopy.ColumnMappings.Add(“StudentName”, “StudentName”);
bulkCopy.ColumnMappings.Add(“City”, “City”);
bulkCopy.WriteToServer(tableStudents);
isSuccuss = true;
}
- Execute the code which inserts rows from ‘Data Table’ to ‘Student’ SQL table.
Now lets see how to insert the CSV data to SQL table with query.
Note: You can also do the same with SQL Import Wizard
Bulk insert records from CSV to SQL Table:
- Assume that you have data available in a CSV file and want to insert them as records in SQL Table.
- Below is the query
Bulk Insert {SQL Table Name}
from ‘CSV File Path’
with
(rowterminator=’\n’,fieldterminator=’,’)