当想在数据库中刺进大量数据时,运用insert不仅效率低,而且会导致一系列的数据库性能问题
当运用insert语句进行刺进数据时。我运用了两种方法:
每次刺进数据时,都只刺进一条数据库,这个会导致每次刺进数据时不断翻开封闭数据库链接,导致效率过低(最差)
运用拼接字符串的方法来进行批量刺进数据,但是运用StringBuilder会占用极大的内存
以上方法对于批量刺进数据都不是一个好的选择,针对这种状况我运用了SqlBulkCopy
sqlbulkCopy:将其它数据源批量加载sqlserver表,便是能够将其它数据源刺进到数据库中
示例代码:
创立测验User表:
1CREATETABLE[dbo].[Users](2[Id][uniqueidentifier]NOTNULL,3[Name][nvarchar](100)NULL,4[Gender][int]NULL,5[Age][int]NULL,6[CityId][int]NULL,7[OpTime][datetime]NULL,8CONSTRAINT[PK_Users]PRIMARYKEYCLUSTERED([Id]ASC)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]9)ON[PRIMARY]
然后界说一个与表映射的Model,因SqlBulkCopy的特性,界说的Model有必要具有与表所有的字段对应的属性:也便是界说的model,需要跟数据表的字段次序相同,因为转为datatable时会依照次序刺进
1publicenumGender2{3Man=1,4Woman5}67publicclassUser8{9publicGuidId{get;set;}10publicstringName{get;set;}11publicGender?Gender{get;set;}12publicint?Age{get;set;}13publicint?CityId{get;set;}14publicDateTime?OpTime{get;set;}15}
制造些数据转为DataTable:
List转为DataTable地址:https://www.cnblogs.com/zhangShanGui/p/12038563.html
1ListusersToInsert=newList();2usersToInsert.Add(newUser(){Id=Guid.NewGuid(),Name=”so1″,Gender=Gender.Man,Age=18,CityId=1,OpTime=DateTime.Now});3usersToInsert.Add(newUser(){Id=Guid.NewGuid(),Name=”so2″,Gender=Gender.Man,Age=19,CityId=2,OpTime=DateTime.Now});4usersToInsert.Add(newUser(){Id=Guid.NewGuid(),Name=”so3″,Gender=Gender.Man,Age=20,CityId=3,OpTime=DateTime.Now});5usersToInsert.Add(newUser(){Id=Guid.NewGuid(),Name=”so4″,Gender=Gender.Man,Age=21,CityId=4,OpTime=DateTime.Now});67vardata=DataTableExtensions.ToDataTable(usersToInsert);8using(SqlBulkCopybulkCopy=newSqlBulkCopy(ConnectionString))9{10bulkCopy.DestinationTableName=11″Users”;12try13{14bulkCopy.WriteToServer(data,DataRowState.Added);15}16catch(Exceptionex)17{18Console.WriteLine(ex.Message);19}20}
1、IT大王遵守相关法律法规,由于本站资源全部来源于网络程序/投稿,故资源量太大无法一一准确核实资源侵权的真实性;
2、出于传递信息之目的,故IT大王可能会误刊发损害或影响您的合法权益,请您积极与我们联系处理(所有内容不代表本站观点与立场);
3、因时间、精力有限,我们无法一一核实每一条消息的真实性,但我们会在发布之前尽最大努力来核实这些信息;
4、无论出于何种目的要求本站删除内容,您均需要提供根据国家版权局发布的示范格式
《要求删除或断开链接侵权网络内容的通知》:https://itdw.cn/ziliao/sfgs.pdf,
国家知识产权局《要求删除或断开链接侵权网络内容的通知》填写说明: http://www.ncac.gov.cn/chinacopyright/contents/12227/342400.shtml
未按照国家知识产权局格式通知一律不予处理;请按照此通知格式填写发至本站的邮箱 wl6@163.com