日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
強(qiáng)烈推薦使用ADO.NET數(shù)據(jù)庫特性

隨著ADO.NET2.0的快速發(fā)展,它的功能也有了很大的提高,對(duì)于我們運(yùn)用它的人更方便一些,下面我們就使用SqlBulkCopy批量裝載數(shù)據(jù)(僅限SqlClient)一起來分析研究一下吧。以往訪問 SQL Server 2000 時(shí),若有大量的數(shù)據(jù)記錄需要添加到數(shù)據(jù)庫內(nèi),例如從主機(jī)系統(tǒng)或是 NCR Teradata、Oracle等數(shù)據(jù)庫系統(tǒng)下載大量數(shù)據(jù)記錄,我們想要將它們快速添加到 SQL Server 2000中,可以有的選擇是調(diào)用 T-SQL 的 Bulk Insert 語法、通過Linked Server 執(zhí)行 SELECT INTO 語法或是執(zhí)行 bcp.exe 工具程序,以及通過 DTS 的 Bulk Insert Task 或啟動(dòng)Transform Data Task 的快速裝載(Use Fast Load)設(shè)置。

目前創(chuàng)新互聯(lián)已為成百上千的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管、服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、扎囊網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

#T#但若要通過自行編寫的程序完成批次裝載,只能以 C/C++ 調(diào)用 OLEDB 或 ODBC 的 Bulk API,無法通過 ADO.NET 或 ADO 等對(duì)象來執(zhí)行。ADO.NET 2.0 的 SqlClient 提供了一個(gè)新的類稱為SqlBulkCopy,它讓 DataSet 內(nèi)大量的數(shù)據(jù)或是 DataReader通過數(shù)據(jù)流(Stream)直接讀取大量的記錄,可以快速將這些記錄添加到目的ADO.NET數(shù)據(jù)庫的數(shù)據(jù)表中。但要注意的是它并非如我們一般用的 bcp.exe工具程序,可以從某個(gè)符號(hào)分隔文件讀取大量數(shù)據(jù),選擇性地搭配格式文件(Format File)將記錄裝載到ADO.NET數(shù)據(jù)庫中,或是將數(shù)據(jù)庫內(nèi)的數(shù)據(jù)導(dǎo)出成為一個(gè)文件。但由于DataSet 能集成 XML 數(shù)據(jù),因此依然可以采用 SqlBulkCopy 類型,輕松地通過 DataSet 將 XML 文件數(shù)據(jù)大量轉(zhuǎn)入到ADO.NET數(shù)據(jù)庫。

可以利用SqlBulkCopy類快速寫入大批量數(shù)據(jù),針對(duì)SQL Server的優(yōu)化,可以寫入DataRow數(shù)據(jù),DataTable,DataReader,并且可以映射不同的數(shù)據(jù)列名
◆WriteToServer(DataTable)寫入數(shù)據(jù)表
◆WriteToServer(DataRow[])批次寫入數(shù)據(jù)行
◆WriteToServer(DataTable ,DataRowState)按行狀態(tài)寫入數(shù)據(jù)庫表
◆WriteToServer(IDataReader)寫入DataReader對(duì)象

下面是個(gè)示例:

 
 
  1. using (SqlConnection sqlcon = new SqlConnection("Data Source=192.168.80.242;
  2. user id=oa;
  3. password=oapassword;
  4. initial catalog=test")) { sqlcon.Open(); 
  5. using (SqlBulkCopy bcp = new SqlBulkCopy(sqlcon)) { bcp.BulkCopyTimeout = 3000;
  6. bcp.DestinationTableName = "dbo.Test01"; 
  7. bcp.ColumnMappings.Add("id", "id"); bcp.ColumnMappings.Add("name1", "name1");
  8. bcp.ColumnMappings.Add("name2", "name2"); 
  9. bcp.ColumnMappings.Add("name3", "name3");
  10. //映射到不同名列 
  11. bcp.ColumnMappings.Add("changedname4", "name4");
  12. bcp.WriteToServer(dt); sqlcon.Close(); } }

但是SqlBulkCopy使用時(shí)要注意以下幾點(diǎn):

1 確認(rèn)確實(shí)需要大容量更新在執(zhí)行此操作,(幾十行的數(shù)據(jù)請(qǐng)盡量使用別的渠道把).

2確認(rèn)數(shù)據(jù)一致性,與檢查機(jī)制,以免遇到主鍵沖突,數(shù)據(jù)不符格式等意外。

3 SqlBulkCopy操作可能會(huì)導(dǎo)致對(duì)目標(biāo)表元數(shù)據(jù)的更改(例如,禁用約束檢查時(shí))。如果出現(xiàn)這種情況,訪問大容量插入表的并發(fā)快照隔離事務(wù)將失敗。

4 SqlBulkCopy將向數(shù)據(jù)庫下大容量更新鎖,請(qǐng)注意并發(fā)性,以免其他連接因長時(shí)間等待而超時(shí)。


文章題目:強(qiáng)烈推薦使用ADO.NET數(shù)據(jù)庫特性
文章轉(zhuǎn)載:http://www.dlmjj.cn/article/djidjsg.html