免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
sqlserver數(shù)據(jù)庫批量插入-SqlBulkCopy

當(dāng)想在數(shù)據(jù)庫中插入大量數(shù)據(jù)時,使用insert 不僅效率低,而且會導(dǎo)致一系列的數(shù)據(jù)庫性能問題

當(dāng)使用insert語句進(jìn)行插入數(shù)據(jù)時。我使用了兩種方式:

  1. 每次插入數(shù)據(jù)時,都只插入一條數(shù)據(jù)庫,這個會導(dǎo)致每次插入數(shù)據(jù)時不斷打開關(guān)閉數(shù)據(jù)庫鏈接,導(dǎo)致效率過低(最差)
  2. 使用拼接字符串的方式來進(jìn)行批量插入數(shù)據(jù),但是使用StringBuilder 會占用極大的內(nèi)存

以上方式對于批量插入數(shù)據(jù)都不是一個好的選擇, 針對這種情況我使用了SqlBulkCopy

sqlbulkCopy:將其它數(shù)據(jù)源批量加載sqlserver表,就是可以將其它數(shù)據(jù)源插入到數(shù)據(jù)庫中

示例代碼:

創(chuàng)建測試User表:

1 CREATE TABLE [dbo].[Users](2     [Id] [uniqueidentifier] NOT NULL,3     [Name] [nvarchar](100) NULL,4     [Gender] [int] NULL,5     [Age] [int] NULL,6     [CityId] [int] NULL,7     [OpTime] [datetime] NULL,8     CONSTRAINT [PK_Users] PRIMARY KEY CLUSTERED([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 必須擁有與表所有的字段對應(yīng)的屬性:也就是定義的model,需要跟數(shù)據(jù)表的字段順序一樣,因為轉(zhuǎn)為datatable時會按照順序插入

 1 public enum Gender 2 { 3     Man = 1, 4     Woman 5 } 6  7 public class User 8 { 9     public Guid Id { get; set; }10     public string Name { get; set; }11     public Gender? Gender { get; set; }12     public int? Age { get; set; }13     public int? CityId { get; set; }14     public DateTime? OpTime { get; set; }15 }

制造些數(shù)據(jù)轉(zhuǎn)為DataTable:

List轉(zhuǎn)為DataTable地址:https://www.cnblogs.com/zhangShanGui/p/12038563.html

 1 List<User> usersToInsert = new List<User>(); 2 usersToInsert.Add(new User() { Id = Guid.NewGuid(), Name = "so1", Gender = Gender.Man, Age = 18, CityId = 1, OpTime = DateTime.Now }); 3 usersToInsert.Add(new User() { Id = Guid.NewGuid(), Name = "so2", Gender = Gender.Man, Age = 19, CityId = 2, OpTime = DateTime.Now }); 4 usersToInsert.Add(new User() { Id = Guid.NewGuid(), Name = "so3", Gender = Gender.Man, Age = 20, CityId = 3, OpTime = DateTime.Now }); 5 usersToInsert.Add(new User() { Id = Guid.NewGuid(), Name = "so4", Gender = Gender.Man, Age = 21, CityId = 4, OpTime = DateTime.Now }); 6  7 var data = DataTableExtensions.ToDataTable(usersToInsert); 8  using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConnectionString)) 9                 {10                     bulkCopy.DestinationTableName =11                         "Users";12                     try13                     {14                         bulkCopy.WriteToServer(data, DataRowState.Added);15                     }16                     catch (Exception ex)17                     {18                         Console.WriteLine(ex.Message);19                     }20                 }
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
.NET高性能框架Chloe.ORM-完美支持MySql
如何把DataTable快速寫入數(shù)據(jù)庫
Entity Framework與ADO.NET批量插入數(shù)據(jù)性能測試
從貧血領(lǐng)域模型重構(gòu)為充血領(lǐng)域模型
2秒內(nèi)向數(shù)據(jù)庫中插入十萬條數(shù)據(jù)?微軟自帶的SqlBulkCopy
SqlBulkCopy批量復(fù)制數(shù)據(jù)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服