C# SqlBulkCopy类大批量数据存入数据库
来源:互联网 发布:水杉建模软件 编辑:程序博客网 时间:2024/06/07 22:11
最近因为要做数据性能优化,原有的数据通过foreach循环插入数据库,由于每循环一次就要和数据库交互一次,性能非常差,用时很长,在网上查阅了一些资料找到了SqlBulkCopy这个类,在原有的数据基础上进行改造,性能非常高。在此将自己的一些使用心得和大家分享:
private void ForeachTa(DataTable dtF,string id) { Stopwatch watch = new Stopwatch(); watch.Start(); DataTable dt = new DataTable();//准备存放数据的临时表 //构造表的列 dt.Columns.Add("ID"); dt.Columns.Add("MaterialID"); dt.Columns.Add("BillID"); dt.Columns.Add("code"); dt.Columns.Add("Name"); dt.Columns.Add("Model"); dt.Columns.Add("MeasureUnit"); dt.Columns.Add("Price"); dt.Columns.Add("Provider"); dt.Columns.Add("LastPrice"); foreach (DataRow row in dtF.Rows) { if (row["MaterialID"] == DBNull.Value) { if (!string.IsNullOrEmpty(row["Price"].ToString())) { DataRow rows = dt.NewRow(); rows["ID"] = System.Guid.NewGuid().ToString(); rows["BillID"] = id; rows["Name"] = row["Name"]; rows["Model"] = row["Model"]; rows["MeasureUnit"] = row["MeasureUnit"]; rows["Price"] = decimal.Parse(row["Price"].ToString()); rows["Provider"] = row["Provider"]; dt.Rows.Add(rows); } else { DataRow rows = dt.NewRow(); rows["ID"] = System.Guid.NewGuid().ToString(); rows["BillID"] = id; rows["Name"] = row["Name"]; rows["Model"] = row["Model"]; rows["MeasureUnit"] = row["MeasureUnit"]; rows["Provider"] = row["Provider"]; dt.Rows.Add(rows); } } else { if (!string.IsNullOrEmpty(row["Price"].ToString())) { DataRow rows = dt.NewRow(); rows["ID"] = System.Guid.NewGuid().ToString(); rows["MaterialID"] = row["MaterialID"]; rows["BillID"] = id; rows["Code"] = row["Code"]; rows["Name"] = row["Name"]; rows["Model"] = row["Model"]; rows["MeasureUnit"] = row["MeasureUnit"]; rows["Price"] = decimal.Parse(row["Price"].ToString()); rows["LastPrice"] = decimal.Parse(row["Price"].ToString()); rows["Provider"] = row["Provider"]; dt.Rows.Add(rows); } else { DataRow rows = dt.NewRow(); rows["ID"] = System.Guid.NewGuid().ToString(); rows["MaterialID"] = row["MaterialID"]; rows["BillID"] = id; rows["Code"] = row["Code"]; rows["Name"] = row["Name"]; rows["Model"] = row["Model"]; rows["MeasureUnit"] = row["MeasureUnit"]; rows["Provider"] = row["Provider"]; dt.Rows.Add(rows); } } } //重点代码处理方式 string connStr = ConfigurationManager.ConnectionStrings["SqlConnectionString"].ConnectionString;//连接字符串 using (SqlBulkCopy sqlBulkcopy = new SqlBulkCopy(connStr)) { sqlBulkcopy.DestinationTableName = "表名";//定义需要存入数据库中的相应的表的名称 sqlBulkcopy.ColumnMappings.Add("ID", "ID"); sqlBulkcopy.ColumnMappings.Add("MaterialID", "MaterialID"); sqlBulkcopy.ColumnMappings.Add("BillID", "BillID"); sqlBulkcopy.ColumnMappings.Add("Code", "Code"); sqlBulkcopy.ColumnMappings.Add("Name", "Name"); sqlBulkcopy.ColumnMappings.Add("Model", "Model"); sqlBulkcopy.ColumnMappings.Add("MeasureUnit", "MeasureUnit"); sqlBulkcopy.ColumnMappings.Add("Price", "Price"); sqlBulkcopy.ColumnMappings.Add("LastPrice", "LastPrice"); sqlBulkcopy.ColumnMappings.Add("Provider", "Provider"); sqlBulkcopy.WriteToServer(dt); } watch.Stop(); }
0 0
- C# SqlBulkCopy类大批量数据存入数据库
- 使用 SqlBulkCopy大批量插入数据到数据库
- 使用SqlBulkCopy大批量导入数据
- Sqlbulkcopy--大批量导入Sql数据
- C# SqlBulkCopy批量向数据库添加数据
- 使用SqlBulkCopy进行大批量数据迁移
- 使用SqlBulkCopy进行数据大批量的迁移
- 使用SqlBulkCopy进行大批量数据迁移
- 使用事务和SqlBulkCopy导入大批量数据
- 利用SqlBulkCopy快速大批量导入数据
- 使用事务和SqlBulkCopy导入大批量数据
- 【黑马程序员】SqlBulkCopy大批量数据的处理
- 利用SqlBulkCopy快速大批量导入数据
- 利用SqlBulkCopy快速大批量导入数据(SqlBulkCopy强大)
- 利用SqlBulkCopy快速大批量导入数据(SqlBulkCopy强大)
- 利用SqlBulkCopy快速大批量导入数据(SqlBulkCopy强大)
- Sql Server数据库使用触发器和sqlbulkcopy大批量数据插入更新
- c# 数据库大批量提交
- jQuery插件原理及封装
- 计算C#代码运行时间
- Unity 闪面问题
- Firebug宣布停止开发更新
- Java OOP
- C# SqlBulkCopy类大批量数据存入数据库
- 第5章 Cucumber的Tags
- Android上支持矢量图标最简单的方法
- STL六大组件
- Dragonbaord 410c Python交互设计(2)——天气预报demo数据获取
- MyBaits批量增删改查
- vim&git 高级
- java反射对实体类取值和赋值
- jQuery UI datepicker用beforeShowDay给特殊日期添加样式以及常用的属性