zoukankan      html  css  js  c++  java
  • mssqlServer大量数据快速插入:SqlBulkCopy

    SqlBulkCopy类,为微软的一个大量数据快速插入。直接上代码

    表结构:

    namespace SqlBulkCopy的演示
    {
        using System.Data.SqlClient;
    
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                //string connString = "server=.;database=CrmChat14;uid=sa;pwd=master;";
                string connString = "server=.;database=MyData;Integrated Security=True;";
    
                //0.0 准备一个DataTable内存表,向这个表中增加10000条数据
                DataTable dt = new DataTable();
                //在dt中一定要按照DestinationTableName对应的表结构来进行创建
                //但是:自增ID,可以不建立
                dt.Columns.Add("dd", typeof(string));
    
                //构造1W条数据
                int count = 100 * 100;
    
                for (int i = 0; i < count; i++)
                {
                    //根据dt的表结构创建一个同结构的DataRow对象
                    DataRow row = dt.NewRow();
                    //给row中的dd字段赋值
                    row["dd"] = "测试" + i;
                    //将row对象添加到内存表dt中
                    dt.Rows.Add(row);
                }
    
                //统计下面代码的执行时间:
                System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();
                st.Start();
                //1.0 实例化sqlbulkcopy的对象
                using (SqlBulkCopy copy = new SqlBulkCopy(connString))
                {
                    //告诉copy对象按照指定的5000条数据量来进行插入 
                    //如果这个数据太庞大的话,一定要加上BatchSize 来分配处理
                    copy.BatchSize = 5000;
    
                    //告诉copy将dt中的数据插入到数据库CrmChat14中的SqlBulkCopyDemo表
                    copy.DestinationTableName = "SqlBulkCopyDemo";
    
                    //告诉copy dt内存表中的dd列对应的是SqlBulkCopyDemo表中的BName,他们之间一定要有一个映射
                    copy.ColumnMappings.Add("dd", "BName");
    
                    //2.0 将数据批量的插入到db中
                    copy.WriteToServer(dt);
                }
    
                st.Stop();
    
                MessageBox.Show("插入" + count + "条数据,耗时:" + st.ElapsedMilliseconds + "毫秒");
            }
        }
    }

    结果:

     SqlBulkCopy的本质,是用的INSERT bulk插入的数据。

  • 相关阅读:
    使用cwRsync实现windows下文件定时同步【转】
    asp.net负载均衡方案[转]
    SQL Server复制入门(一)----复制简介【转】
    使用ServiceStackRedis链接Redis简介 [转]
    Sqlserver事务发布实现数据同步
    C#MongoDB 分页查询的方法及性能
    C#基础-Func,Action
    OpenERP 的XML-RPC的轻度体验+many2many,one2many,many2one创建方式
    使用xml-rpc调试openerp模块中的函数
    Odoo(OpenERP)开发实践:通过XML-RPC接口访问Odoo数据库
  • 原文地址:https://www.cnblogs.com/zhuyapeng/p/9517641.html
Copyright © 2011-2022 走看看