首页 > 代码库 > SqlBulkCopy 类

SqlBulkCopy 类

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;            }        }

 

SqlBulkCopy 类