国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

SqlBulkCopy使用介紹以及注意事項(xiàng)

2019-11-14 16:50:50
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

SqlBulkCopy,微軟提供的快速插入類(lèi),針對(duì)大批量數(shù)據(jù)操作,此類(lèi)效果明顯有所提升,以下是微軟官方解釋?zhuān)?/span>

Microsoft SQL Server 提供一個(gè)稱(chēng)為 bcp 的流行的命令提示符實(shí)用工具,用于將數(shù)據(jù)從一個(gè)表移動(dòng)到另一個(gè)表(表既可以在同一個(gè)服務(wù)器上,也可以在不同服務(wù)器上)。SqlBulkCopy 類(lèi)允許編寫(xiě)提供類(lèi)似功能的托管代碼解決方案。還有其他將數(shù)據(jù)加載到 SQL Server 表的方法(例如 INSERT 語(yǔ)句),但相比之下 SqlBulkCopy 提供明顯的性能優(yōu)勢(shì)。

使用 SqlBulkCopy 類(lèi)只能向 SQL Server 表寫(xiě)入數(shù)據(jù)。但是,數(shù)據(jù)源不限于 SQL Server;可以使用任何數(shù)據(jù)源,只要數(shù)據(jù)可加載到 DataTable 實(shí)例或可使用 IDataReader 實(shí)例讀取數(shù)據(jù)。

 

要使用此類(lèi)一共需要用到三個(gè)步驟:

1.初始化數(shù)據(jù)源類(lèi)型,DataTable或DataRow,一般我們使用數(shù)據(jù)庫(kù)中的列名作為數(shù)據(jù)源的列名;

1 DataTable dtCopy = new DataTable();2 dtCopy.Columns.Add("jhsSitid");3 dtCopy.Columns.Add("applyGoodsId");4 dtCopy.Columns.Add("ghsSitid");5 dtCopy.Columns.Add("state");6 dtCopy.Columns.Add("applyTime");
初始化DataTable

2.給數(shù)據(jù)源添加數(shù)據(jù):

 1  foreach (DataRow r in ds.Tables[0].Rows) 2             { 3                 DataRow newRow = dtCopy.NewRow(); 4                 newRow["jhsSitid"] = r["sitid"].ToString(); 5                 newRow["applyGoodsId"] = goodsId; 6                 newRow["ghsSitid"] = siteId; 7                 newRow["state"] = "0"; 8                 newRow["applyTime"] = DateTime.Now; 9                 dtCopy.Rows.Add(newRow);10             }
循環(huán)獲取數(shù)據(jù)源

3.打開(kāi)數(shù)據(jù)庫(kù)鏈接,批量插入數(shù)據(jù)源數(shù)據(jù):

 1 SqlConnection conn = new SqlConnection(baseclass.connectionString); 2                 if (conn.State == ConnectionState.Closed) 3                 { 4                     conn.Open(); 5                 } 6                 SqlTransaction st = conn.BeginTransaction(); 7                 using (SqlBulkCopy sqlCopy = new SqlBulkCopy(conn, SqlBulkCopyOptions.FireTriggers, st)) 8                 { 9                     sqlCopy.DestinationTableName = "jhQQ_list";10                     sqlCopy.BulkCopyTimeout = 60;11                     sqlCopy.ColumnMappings.Add("jhsSitId", "jhsSitId");12                     sqlCopy.ColumnMappings.Add("applyGoodsId", "applyGoodsId");13                     sqlCopy.ColumnMappings.Add("ghsSitId", "ghsSitId");14                     sqlCopy.ColumnMappings.Add("state", "state");15                     sqlCopy.ColumnMappings.Add("applyTime", "applyTime");16                     try17                     {18                         sqlCopy.WriteToServer(dtCopy);19                         st.Commit();20                         result = true;21                     }22                     catch (Exception ex)23                     {24                         st.Rollback();25                     }26                     finally27                     {28                         conn.Close();29                     }30                 }
批量插入到數(shù)據(jù)庫(kù)

 

sqlCopy.DestinationTableName-------->為指定數(shù)據(jù)庫(kù)表名

sqlCopy.BulkCopyTimeout------------->指定完成時(shí)間

sqlCopy.ColumnMappings.Add--------->指定數(shù)據(jù)庫(kù)與數(shù)據(jù)源中的對(duì)應(yīng)關(guān)系

另外得注意的是,sqlCopy.ColumnMappings.Add指定對(duì)應(yīng)關(guān)系時(shí),一定要注意大小寫(xiě)要與數(shù)據(jù)庫(kù)一直,sqlCopy.ColumnMappings.Add是對(duì)大小寫(xiě)很敏感的,另外對(duì)應(yīng)的字段個(gè)數(shù)也必須一致,否則就會(huì)出現(xiàn)《給定的 ColumnMapping 與源或目標(biāo)中的任意列均不匹配。》錯(cuò)誤;

 

以上是個(gè)人見(jiàn)解,如有理解有誤的地方歡迎指出;

 

 


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 镇原县| 巨鹿县| 武陟县| 印江| 日照市| 永仁县| 平罗县| 天津市| 贵南县| 台中县| 延津县| 西城区| 乌审旗| 昭平县| 肃北| 西藏| 通州市| 泉州市| 阳高县| 洮南市| 奉化市| 临汾市| 军事| 海原县| 新安县| 富阳市| 泽州县| 韩城市| 东明县| 静海县| 凭祥市| 武邑县| 东乡县| 嘉义市| 大连市| 泰州市| 德庆县| 绥江县| 简阳市| 德江县| 永定县|