SqlBulkCopy批量插入数据神器

1.简单例子

    class Program
    {
        static void Main(string[] args)
        {
            Stopwatch sw = new Stopwatch();
            DataTable dt = GetTableSchema();
            for (int i = 0; i < 100000; i++)
            {
                DataRow r = dt.NewRow();
                //0行未自增列,为空就好
                r[1] = i;
                r[2] = string.Format("User-{0}", i);
                r[3] = (decimal)i;
                r[4] = DateTime.Now;
                r[5] = i;
                r[6] = string.Format("remak-{0}", i);
                r[7] = 1;
                r[8] = true;
                dt.Rows.Add(r);
            }
            sw.Start();
            BulkToDB(dt);
            sw.Stop();
            Console.WriteLine(string.Format("Elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds));
            Console.ReadLine();
        }

        public static void BulkToDB(DataTable dt)
        {
            SqlConnection sqlConn = new SqlConnection(
                ConfigurationManager.ConnectionStrings["wolfTest"].ConnectionString);
            SqlBulkCopy bulkCopy = new SqlBulkCopy(sqlConn);
            bulkCopy.DestinationTableName = "wolf_example";
            bulkCopy.BatchSize = dt.Rows.Count;

            try
            {
                sqlConn.Open();
                if (dt != null && dt.Rows.Count != 0)
                    bulkCopy.WriteToServer(dt);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                sqlConn.Close();
                if (bulkCopy != null)
                    bulkCopy.Close();
            }
        }

        public static DataTable GetTableSchema()
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[]{
                new DataColumn("Num",typeof(int)),
                new DataColumn("Type",typeof(int)),
                new DataColumn("Name",typeof(string)),
                new DataColumn("Money",typeof(decimal)),
                new DataColumn("CTime",typeof(DateTime)),
                new DataColumn("UserID",typeof(int)),
                new DataColumn("Remak",typeof(string)),
                new DataColumn("Sex",typeof(int)),
                new DataColumn("IsShow",typeof(bool)),
            });

            return dt;
        }

    }
原文地址:https://www.cnblogs.com/lgxlsm/p/7989211.html