随着系统关系数据库的使用范围愈来愈广泛,如何高效稳定地将数据写入MSSQL成为一个值得关注的热门话题。本文主要就MSSQL数据库批量数据写入实践,结合本身实践经验总结出两种比较成熟的方案来高效稳定地将大量数据写入MSSQL数据库:表值函数和.NET SqlBulkCopy类。
表值函数(TVF)是数据库提供的一种特殊类型的函数,可以在SQL语句中当作一个表来使用,它可以返回一个用户定义的结果集。与普通函数区别,TVF可以在SQL查询中当作一个表使用,支持多个结果列。
批量写入数据库可以利用MSSQL的TVF,以表的情势将数据写入数据库。以下是实现的SQL示例:
DECLARE @tempTable TABLE (id INT,name VARCHAR(50))
INSERT INTO @tempTableVALUES(1, '张三')
VALUES(2, '李四')
INSERT INTO t_user (id,name) SELECT * FROM @tempTable
从上面的示例可以看出,利用TVF可以非常方便的将数据写入数据表中。
.NET SqlBulkCopy类提供了一种高效稳定地将数据从一个表复制到另外一个表的方法。它可以用来在.NET利用程序中将DataTable或DataReader中的数据写入MSSQL数据库表中,提供了非常强大的批量操作能力。
实现用.NET SqlBulkCopy类将数据写入MSSQL数据库的代码示例:
string connectionString= ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString;
using (SqlConnection con = new SqlConnection(connectionString)){
con.Open(); using (SqlBulkCopy sqlBulkCopy = new SqlBulkCopy(connectionString))
{ sqlBulkCopy.DestinationTableName = "t_user";
sqlBulkCopy.WriteToServer(myDataTable); }
}
从上面可以看出,.NET SqlBulkCopy类可以支持批量将DataTable或DataReader中的大量数据写入MSSQL数据库。
总的来讲,MSSQL数据库批量数据写入实践可以利用MSSQL的表值函数TVF和.NET SqlBulkCopy类两种方式,都可以满足要求,实现高效稳定地将大量数据写入MSSQL数据库。
本文来源:https://www.yuntue.com/post/198179.html | 云服务器网,转载请注明出处!

微信扫一扫打赏
支付宝扫一扫打赏