1.SqlBulkCopy 简介
Microsoft SQL Server 提供一个称为 bcp 的流行的命令提示符实用工具,用于将数据从一个表移动到另一个表(表既可以在同一个服务器上,也可以在不同服务器上)。SqlBulkCopy 类允许编写提供类似功能的托管代码解决方案。还有其他将数据加载到 SQL Server 表的方法(例如 INSERT 语句),但相比之下 SqlBulkCopy 提供明显的性能优势。
使用 SqlBulkCopy 类只能向 SQL Server 表写入数据。但是,数据源不限于 SQL Server;可以使用任何数据源,只要数据可加载到 DataTable 实例或可使用 IDataReader 实例读取数据。
2.SqlBulkCopy 属性
3.SqlBulkCopy 方法
4.SqlBulkCopy 示例
public bool ExecuteSqlBulkCopy() { string _strConn = ""; string _sqlTableName = "T_User"; //服务器表名 DataTable _table = new DataTable(); //映射表 _table.Columns.Add("uName"); _table.Columns.Add("uAge"); //填充数据 for (int i = 0; i < 3; i++) { DataRow _row = _table.NewRow(); _row["uName"] = "姓名" + i; _row["uAge"] = "年龄" + i; } try { using (SqlConnection conn = new SqlConnection(_strConn)) { conn.Open(); using (SqlTransaction tran = conn.BeginTransaction()) { using (SqlBulkCopy sbc = new SqlBulkCopy(conn, SqlBulkCopyOptions.Default, tran)) { sbc.BatchSize = 500; //每一批次中的行数,每一批次结束时,让该批次中的行发送到服务器 sbc.BulkCopyTimeout = 600; //超时之前操作完成所允许的秒数 sbc.DestinationTableName = _sqlTableName;//服务器上的表名称 //映射表和服务器表做关联映射 foreach (DataColumn col in _table.Columns) { sbc.ColumnMappings.Add(col.ColumnName, col.ColumnName); } //复制数据 sbc.WriteToServer(_table); //提交事物 tran.Commit(); return true; } } } } catch (Exception ex) { Console.WriteLine(ex.Message); return false; } }
时间: 2024-10-11 06:53:05