使用SqlBulkCopy sqlserver 批量插入数据(C#)

发布时间 2023-03-31 17:16:26作者: 乌卡拉卡

先说实现原理:将需要插入数据库的集合里面的数据存在datatable里面,列名需相同,然后调用SqlBulkCopy方法。
1.新建datatable,并赋值
DataTable dataTable = new DataTable();
dataTable.Columns.Add("NAME1");
dataTable.Columns.Add("NAME2");
dataTable.Columns.Add("NAME3");
dataTable.Columns.Add("NAME4");
DataRow row = dataTable.NewRow();
for (int i = 1; i < req.data.Count; i++)
{
row["NAME1"] = NAME1;
row["NAME2"] = NAME2;
row["NAME3"] = NAME3;
row["NAME4"] = NAME4;
dataTable.Rows.Add(row);
}

2.调用SqlBulkCopy批量插入,“TABLE_NAME”为表名,dataTable是存好数据的dataTable
BulkInsertData(dataTable, "TABLE_NAME");
SqlBulkCopy方法
public static void BulkInsertData(DataTable dt, string tableName) {
string ConnectionString = "Server=" + "127.0.0.1" + ";Database=localhost;User ID=sa;Password=123";//数据库连接字符串
using (var bulkCopy = new SqlBulkCopy(ConnectionString))
{
foreach (DataColumn dcPrepped in dt.Columns)
{
bulkCopy.ColumnMappings.Add(dcPrepped.ColumnName, dcPrepped.ColumnName);
}
bulkCopy.BulkCopyTimeout = 660;
bulkCopy.DestinationTableName = tableName;
bulkCopy.WriteToServer(dt);
}
}