SqlBulkCopy大批量插入数据到数据库效率

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

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace test
{
class Program
{
static void Main(string[] args)
{
//创建一个DataTable对象 
DataTable dt = new DataTable();
dt.Columns.Add("names", typeof(string));
//给dt内存表插入数据 
for (int i = 0; i < 1000000; i++)
{
dt.Rows.Add("测试" + i);
}
System.Diagnostics.Stopwatch st = new System.Diagnostics.Stopwatch();
st.Start();
using (SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=uiop;database=test"))
{

conn.Open();
using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))
{
try
{
//插入到数据库的目标表 TbA:表名 
bulkCopy.DestinationTableName = "[dbo].[info]";
//内存表的字段 对应数据库表的字段 
bulkCopy.ColumnMappings.Add("names", "Name");
bulkCopy.WriteToServer(dt);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
st.Stop();
Console.WriteLine("成功!测试时间为:" + st.ElapsedMilliseconds);
Console.ReadKey();
}
}
}

 

posted on 2018-04-01 17:56  天之客  阅读(128)  评论(0编辑  收藏  举报

导航