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秒,真是光速啊,爽。
  • 相关阅读:
    今年暑假不AC
    亲和数
    改革春风吹满地
    hdu人见人爱A^B
    男人必看的10部电影
    富人和穷人之间的经典差异
    今日十句英文
    看透一个人起码要看的。
    人生经典20句
    解决ubuntu中mysql中文乱码问题
  • 原文地址:https://www.cnblogs.com/Kingly/p/2650388.html
Copyright © 2011-2022 走看看