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秒,真是光速啊,爽。
  • 相关阅读:
    用UILocalNotification实现一个闹钟(Swift)
    Swift
    iOS判断一些权限是否被禁止
    ofbiz学习笔记
    POJ1062 昂贵的聘礼 【DFS】
    echarts 应用数个样例
    java 中缀转后缀(逆波兰)
    开放是否能让苹果成为智能家居的标准制定者?
    2015阿里校招前端在线题目
    hql中不能写count(1)能够写count(a.id)
  • 原文地址:https://www.cnblogs.com/Kingly/p/2650388.html
Copyright © 2011-2022 走看看