SQLBulkCopy用于批量复制数据。性能优势明显。
使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataReader实例读取数据(如:SqlDataReader)。
示例:
//sqlbulkCopy 批量插入数据库 using (SqlBulkCopy sqlBC = new SqlBulkCopy(conn)) { //一次批量的插入的数据量 sqlBC.BatchSize = 10000; //超时之前操作完成所允许的秒数,如果超时则事务不会提交 ,数据将回滚,所有已复制的行都会从目标表中移除 sqlBC.BulkCopyTimeout = 60; //设置要批量写入的表 sqlBC.DestinationTableName = "dbo.tbl_test"; //自定义的datatable和数据库的字段进行对应 sqlBC.ColumnMappings.Add("A", "col_A"); sqlBC.ColumnMappings.Add("B", "col_B"); //批量写入 sqlBC.WriteToServer(dt); }
构造Datatable示例:
//构造一个Datatable存储将要批量导入的数据 DataTable dt = new DataTable(); dt.Columns.Add("A", typeof(string)); dt.Columns.Add("B", typeof(int)); DataRow dr = dt.NewRow(); dr["A"] ="ddsdafdsfsdafsd"; dr["B"] =1; dt.Rows.Add(dr);
“SqlBulkCopy使用”上的1条回复
纯技术哈