SqlBulkCopy

SqlBulkCopy是.net提供的一种将大批量数据插入到数据库中的方法..

若当面对十万级数据量以上的时候 使用单纯的SQL语句的响应速度已经远不能满足需求了

这时  一般考虑使用 SqlBulkCopy来进行优化

使用条件:  目标数据库为Sql Server(这事只能问MS了)...


核心语句:

private string desConStr =System.Configuration.ConfigurationManager.ConnectionStrings["des_connstr"].ConnectionString;//目标数据源
SqlBulkCopy bulkCopy = new SqlBulkCopy(desConStr);//创建SqlBunlCopy
bulkCopy.BatchSize = 1000;//每批处理数据的数量
bulkCopy.NotifyAfter = 1000;//响应超时时间
bulkCopy.DestinationTableName = "table_name";//数据库表名
bulkCopy.SqlRowsCopied +=  new SqlRowsCopiedEventHandler(EventHandler);  //每批处理数据后的事件
bulkCopy.ColumnMappings.Add("column_name","column_name");//数据源列名与目标列名的映射
bulkCopy.WriteToServer(SqlDataReader or DataTable);//执行输入..参数为数据源

下面简单的试例一下使用:

private static void BulkCopyTest()  
        {  
            string sourceConStr =System.Configuration.ConfigurationManager.ConnectionStrings["source_connstr"].ConnectionString;
            string desConStr =System.Configuration.ConfigurationManager.ConnectionStrings["des_connstr"].ConnectionString;
            DataTable dt= new DataTable();  
            using (SqlConnection sourceConn = new SqlConnection(sourceConStr))  
            {  
                SqlCommand cmd= new SqlCommand("SELECT * FROM USER", sourceConn);  
                sourceConn.Open();  
                SqlDataReader sqlreader = cmd.ExecuteReader();  
                using (SqlConnection desConnection = new SqlConnection(desConStr))  
                {  
                    desConnection.Open();  
                    using (SqlBulkCopy bulkCopy = new SqlBulkCopy(desConStr))  
                    {  
                        bulkCopy.BatchSize=1000;
                        bulkCopy.NoitifyAfter=1000;
                        bulkCopy.ColumnMappings.Add("uname", "uname");  
                        bulkCopy.ColumnMappings.Add("upass", "upass");  
                        bulkCopy.ColumnMappings.Add("token", "token");  
                        bulkCopy.DestinationTableName = "User";  
                        bulkCopy.WriteToServer(reader);  
                    }  
                }  
                reader.Close();  
            }  
        }  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值