• ASP.NET(C#)SqlBulkCopy批量的快速插入数据


    ·  ASP.NET(C#)SqlBulkCopy批量的快速插入数据

    SqlBulkCopyDataTableDataReader数据快速插入到数据库,数据迁移很快捷

    privatestatic readonly string connStr = ConfigurationManager.ConnectionStrings["myConnStr"].ConnectionString;

        SqlConnection conn = new SqlConnection(connStr);

        protected void Page_Load(object sender, EventArgs e)

        {

            if (!Page.IsPostBack)

            {

                //ASP.NET(C#)SqlBulkCopy批量的快速插入数据

                DateTime start = DateTime.Now;

                Response.Write(start.ToString("HH:mm:ss:fff"));

     

                DataTable dt = new DataTable();

                dt.Columns.Add("id", typeof(int));

                dt.Columns.Add("name", typeof(string));

     

                for (int i = 0; i < 10000; i++)

                {

                    DataRow row = dt.NewRow();

                    row["name"] = i.ToString();

                    dt.Rows.Add(row);

                }

     

                conn.Open();

                using (SqlBulkCopy copy = new SqlBulkCopy(conn))

                {

                    copy.BatchSize = 100;//每次插入的记录数

                    copy.BulkCopyTimeout = 60;//超时之前操作完成所允许的秒数

                    copy.NotifyAfter = 1000;//在生成通知事件之前要处理的行数

                    copy.SqlRowsCopied += new SqlRowsCopiedEventHandler(copy_SqlRowsCopied);//每次处理完NotifyAfter属性指定的行数时发生

                    copy.DestinationTableName = "bulktest";

     

                    //DataTable与数据表的字段名称对应(数据迁移到时候,可以解决表字段名称不一样)

                    copy.ColumnMappings.Add("id", "id");

                    copy.ColumnMappings.Add("name", "title");

     

                    copy.WriteToServer(dt);

                }

                conn.Dispose();

     

                DateTime end = DateTime.Now;

                Response.Write("<br />" + end.ToString("HH:mm:ss:fff"));

                TimeSpan ts = end - start;

                Response.Write("<br />所需时间:" + ts.TotalSeconds.ToString());

            }

        }

     

        void copy_SqlRowsCopied(object sender, SqlRowsCopiedEventArgs e)

        {

            Response.Write("<br />成功插入1000");

    }

     

    <connectionStrings>

             <addname="myConnStr"connectionString="Data Source=.;Initial Catalog=Study;User Id=sa;Password=sa;"/>

    </connectionStrings>

     

  • 相关阅读:
    Ubunut 安装 Mariadb 数据库
    编译 APISIX
    Watchtower 自动更新 Docker 镜像与容器
    Drone 教程
    异步任务工具类
    Html 转 PDF
    数据中台
    九大数据分析方法:指标拆解法
    用户画像
    Hudi的更新机制
  • 原文地址:https://www.cnblogs.com/yc1990/p/2879625.html
Copyright © 2020-2023  润新知