c# 向数据库插数据超过1000条

时间:2023-03-08 20:29:47

今天想着如何大批量插入数据到数据库中  最开始的想法是使用insert循环插入 但每次都要创建数据库连接 这是非常消耗时间和消耗资源的事。后在网上看到了说使用SqlBulkCopy ,就看了看文档和别人的列子 感觉理解到了一点大概的使用方法  就打算记录下来 方便自己以后使用

  1. <code class="language-csharp">using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.Data.SqlClient;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;
  8. namespace 测试
  9. {
  10. class Program
  11. {
  12. static void Main(string[] args)
  13. {
  14. //创建一个DataTable对象
  15. DataTable dt = new DataTable();
  16. dt.Columns.Add("name",typeof(string));
  17. //给dt内存表插入数据
  18. for (int i = 0; i < 1000000; i++)
  19. {
  20. dt.Rows.Add("测试" + i);
  21. }
  22. System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();
  23. st.Start();
  24. using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=1316123;database=Temp"))
  25. {
  26. conn.Open();
  27. using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
  28. {
  29. try
  30. {
  31. //插入到数据库的目标表 TbA:表名
  32. bulkCopy.DestinationTableName = "[dbo].[temptable]";
  33. //内存表的字段 对应数据库表的字段
  34. bulkCopy.ColumnMappings.Add("name", "TempData");
  35. bulkCopy.WriteToServer(dt);
  36. }
  37. catch (Exception ex)
  38. {
  39. Console.WriteLine(ex);
  40. }
  41. }
  42. }
  43. st.Stop();
  44. Console.WriteLine("成功!测试时间为:"+st.ElapsedMilliseconds);
  45. Console.ReadKey();
  46. }
  47. }
  48. }
  49. </code>