<返回更多

数据库批量插入数据方法

2023-10-17    
加入收藏

SQL Server 批量插入数据常用方法:

一、普通的Insert插入

二、拼接BatchInsert插入

三、SqlBulkCopy插入

 

以上3种方法插入数据的速度比较:(ms:毫秒,1000 毫秒 = 1秒)

由于电脑硬件情况不一样,以下数据仅供参考,不一样的电脑会有所偏差,但不影响比较,因为在一样的硬件环境下。

1、以一次插入1万条数据看:

采用Insert 需要 1501.322ms,

采用BatchInsert 需要850.6261ms,

采用SqlBulkCopy需要30.4119ms

2、以一次插入10万条数据看:

采用Insert 需要 13875.3234ms,

采用BatchInsert 需要8278.4052ms,

采用SqlBulkCopy需要314.7301ms。

通过比较采用SqlBulkCopy是最快的一种方法,特别适合用于大批量数据的插入,比如一次插入上百万条数据等情况。在C#开发语言中有一个SqlBulkCopy 类,命名空间:System.Data.SqlClient。

如何在 C# 中使用 SqlBulkCopy DEMO:

using System;

using System.Data;

using System.Data.SqlClient;

namespace SqlBulkCopyDemo

{

/*

-- 测试表创建

IF OBJECT_ID('t') IS NOT NULL

DROP TABLE t

GO

CREATE TABLE t(

id INT PRIMARY KEY,

[name] NVARCHAR(20) NOT NULL

)

GO

*/

class Program

{

static void MAIn(string[] args)

{

//连接数据库

string connString = "data source=(local);initial catalog=test;Integrated Security=True";

string sql = "select * from t where 1=0";

DataTable dt = null;

using (SqlConnection conn = new SqlConnection(connString))

{

conn.Open();

SqlCommand cmd = new SqlCommand(sql, conn);

SqlDataAdapter adapter = new SqlDataAdapter(cmd);

dt = new DataTable();

adapter.Fill(dt);

}

for (int i = 1; i <= 10; i++) {

DataRow dr = dt.NewRow();

dr["id"] = i;

dr["name"] = "n" + i.ToString();

dt.Rows.Add(dr);

}

//dt已有数据

//给表t批量插入数据

using(SqlConnection conn = new SqlConnection(connString))

{

conn.Open();

using (SqlBulkCopy bulkCopy = new SqlBulkCopy(conn))

{

 

bulkCopy.DestinationTableName = "t"; //需要插入数据的表名

bulkCopy.WriteToServer(dt); //将DataTable中的数据写入表中

}

}

Console.Read();

}

}

}

关键词:数据库      点击(4)
声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多数据库相关>>>