在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
本文将介绍三种批量插入数据的方法。第一种方法是使用循环语句逐个将数据项插入到数据库中;第二种方法使用的是SqlBulkCopy,使您可以用其他源的数据有效批量加载 SQL Server 表;第三种使用的方法是sql server中的表值参数方法,表值参数是 SQL Server 2008 中的新参数类型。表值参数是使用用户定义的表类型来声明的。使用表值参数,可以不必创建临时表或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据。 代码示例: 此例子为控制台输出程序,有两个类,一个为BulkData类,主要实现了表值参数和sqlbulkcopy是如何插入数据的,一个类为Repository,一个app.config配置文件。所用数据库为sql server 2012。 建库语句: 复制代码 代码如下: 打开 --Create DataBase use master go if exists(select * from master.sys.sysdatabases where name=N'BulkDB') drop database BulkDB create database BulkDB; go
if exists(select * from sys.objects where object_id=OBJECT_ID(N'[dbo].[BulkTable]') and type in(N'U'))
if exists create type [dbo].[BulkType] as table select * from dbo.BulkTable BulkData.cs 复制代码 代码如下: 打开 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; namespace BulkData catParam.SqlDbType = SqlDbType.Structured; public static DataTable GetTable() dt.Columns.AddRange(new DataColumn[]{new DataColumn("Id",typeof(int)),new DataColumn("UserName",typeof(string)),new DataColumn("Pwd",typeof(string))}); return dt; public static void BulkToDB(DataTable dt) try Repository.cs 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Diagnostics; namespace BulkData Console.ReadLine(); public static void UseTableValue() for (int outLayer = 0; outLayer < 10; outLayer++) for (int count = outLayer * 100000; count < (outLayer + 1) * 100000; count++) sw.Start(); Console.WriteLine(string.Format("{1} hundred thousand data elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds, outLayer + 1)); Console.ReadLine(); public static void UserNormalInsert() SqlConnection sqlConn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnStr"].ConnectionString); SqlCommand sqlComm = new SqlCommand(); try sqlComm.Parameters["@p0"].Value = count; Console.WriteLine(string.Format("{1} hundred thousand data elapsed Time is {0} Milliseconds", sw.ElapsedMilliseconds, outLayer + 1)); Console.ReadLine(); App.config 复制代码 代码如下: <?xml version="1.0" encoding="utf-8" ?> <configuration> <connectionStrings> <add name="ConnStr" connectionString="data source=.;Integrated Security=SSPI;Initial Catalog=BulkDB" providerName="System.Data.SqlClient" /> </connectionStrings> </configuration> Program.cs 复制代码 代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Diagnostics; namespace BulkData 三种方法分别插入100万条数据所用的时间为: 循环语句所用时间:
sqlbulkcopy方法所用时间为:
表值参数所用时间为: 我不会告诉你有一种sql语法可以这么写: 复制代码 代码如下: insert into SystemSet_tbl (ss_guid,ss_type,ss_comment) values ('00000000-0000-0000-0000-000000000007',1,''),('00000000-0000-0000-0000-000000000008',1,'') |
请发表评论