zoukankan      html  css  js  c++  java
  • SQLServer极速批量插入数据的方式


    public bool Inserts(ObservableCollection<CustomerModel> models)

    {

    DataTable dataTable = SQLHelper.ExecteAdapter("select top 0 * from Customer", CommandType.Text, null);
    foreach (var m in models)
    {
    DataRow dataRow = dataTable.NewRow();
    dataRow[1] = m.Name;
    dataRow[2] = m.Add;
    dataRow[3] = m.Email;
    dataRow[4] = m.Phone;
    dataTable.Rows.Add(dataRow);
    }
    SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(SQLHelper.ConnString);
    sqlBulkCopy.DestinationTableName = "Customer";
    try
    {
    if (dataTable != null && dataTable.Rows.Count > 0)
    {
    sqlBulkCopy.WriteToServer(dataTable); 
    }
    return true;
    }
    catch (Exception ex)
    {
    return false;
    }
    finally
    {
    sqlBulkCopy.Close();
    }
    }

      

    public static DataTable ExecteAdapter(string sql, CommandType type, params SqlParameter[] param)
            {
                using (SqlDataAdapter adapter = new SqlDataAdapter(sql, ConnString))
                {
                    SqlCommand cmd = adapter.SelectCommand;
                    if (param != null)
                    {
                        cmd.Parameters.AddRange(param);
                    }
                    cmd.CommandType = type;
                    DataTable dt = new DataTable();
                    adapter.Fill(dt);
                    return dt;
                }
            }
    注明:插入5000条数据时,使用SQLHelper方式需要约35秒,使用Entity Framework方式需要约55秒,采用SqlBulkCopy方式需要约2秒,真是光速啊,爽。
  • 相关阅读:
    Dubbo的负载均衡
    阿里巴巴为什么不用 ZooKeeper 做服务发现?
    Dubbo注册中心
    史上最全 40 道 Dubbo 面试题及答案
    dubbo面试问题
    iOS7中弹簧式列表的制作
    自动打包
    http://blog.csdn.net/v_july_v/article/details/6543438
    ARC简介以及工程中ARC与非ARC的混合
    iOS开源库–最全的整理
  • 原文地址:https://www.cnblogs.com/Kingly/p/2650388.html
Copyright © 2011-2022 走看看