【C#--数据】1.使用SqlBulkCopy批量导入数据库的示例

来源:互联网 发布:风速打印软件下载 编辑:程序博客网 时间:2024/05/18 02:21

使用SqlBulkCopy批量导入数据库的示例

 /* 准备示例的工作:
1、准备数据源
  (1)、新建数据库(Data_test) 表(Tb_Users) 有两列 ID(int)、 UserID(nvarchar(255))。
  (2)、程序制造假数据
DataTable table = GetTestTable();
public  DataTable GetTestTable()
        {
            DataTable dt = new DataTable();
            dt.Columns.AddRange(new DataColumn[]
                                  { 
    new DataColumn("ID",typeof(int)),
                                     new DataColumn("UserID",typeof(string))
                                  });
            for (int i = 1; i < 28000; i++)
            {
                DataRow row = dt.NewRow();
                row[0] = i;
                row[1] = Guid.NewGuid().ToString();
                dt.Rows.Add(row);
            }
            return dt;
        }

*
1、新建数据库连接
         string connString = @"Data Source=127.0.0.1;Initial Catalog=Data_test;User ID=sa;Password=123456";
            SqlConnection con = new SqlConnection(connString);
2、新建SqlBulkCopy对象
            SqlBulkCopy burk = new SqlBulkCopy(con);
3、设置目的表的表名
burk.DestinationTableName = "Tb_Users";
4、设置要导入的数据条数
burk.BatchSize = table.Rows.Count;
5、打开连接执行导入,统计用时,并关闭连接
con.Open();
DateTime startWite = DateTime.Now;
burk.WriteToServer(table);
DateTime endWrite = DateTime.Now;
span = endWrite.Subtract(startWite);
con.Close();
*
*/


VS建立控制台应用(.NET Framework)项目(SqlBurkCopyDemo),代码如下:

using System;using System.Collections.Generic;using System.Data;using System.Data.SqlClient;using System.Linq;using System.Text;using System.Threading.Tasks;namespace SqlBurkCopyDemo{    public class Program    {        static void Main(string[] args)        {            Console.WriteLine("正在插入测试数据");            TimeSpan span = new TimeSpan();            try            {                //Copy copy = new Copy();                //span = copy.InsertData();                span = InsertData();            }            catch (Exception ex)            {                Console.WriteLine("异常!");            }            Console.WriteLine("共花费时间" + span.ToString() + "秒");            Console.ReadLine();        }        public static TimeSpan InsertData()        {            DataTable table = GetTestTable();            string connString = @"Data Source=127.0.0.1;Initial Catalog=Data_test;User ID=sa;Password=123456"; //新建数据库连接            SqlConnection con = new SqlConnection(connString);            SqlBulkCopy burk = new SqlBulkCopy(con); //新建SqlBulkCopy对象            burk.DestinationTableName = "Tb_Users";  //表名            burk.BatchSize = table.Rows.Count;  //设置要导入的数据条数            TimeSpan span = new TimeSpan();            try            {                con.Open(); //打开连接执行导入,统计用时,并关闭连接                if (table != null && table.Rows.Count > 0)                {                    DateTime startWite = DateTime.Now;                    burk.WriteToServer(table); //table导入                    DateTime endWrite = DateTime.Now;                    span = endWrite.Subtract(startWite);                }            }            catch (Exception ex)            {                throw new Exception("批量插入失败!");            }            finally            {                con.Close();            }            return span;        }        public  static DataTable GetTestTable()        {            DataTable dt = new DataTable();            dt.Columns.AddRange(new DataColumn[]                                  { new DataColumn("ID",typeof(int)),                                     new DataColumn("UserID",typeof(string))                                  });            for (int i = 1; i < 28000; i++)            {                DataRow row = dt.NewRow();                row[0] = i;                row[1] = Guid.NewGuid().ToString();                dt.Rows.Add(row);            }            return dt;        }    }}


阅读全文
0 0
原创粉丝点击