大量寫入資料 SqlClient.SqlBulkCopy

  • 411
  • 0

第一次使用 SqlBulkCopy

這是專案需求上需要從 A Server 取得大量資料,然後在篩檢後寫到 B Server.DataBase.Table 上

一開始想到作法

  • 最簡單的 Insert command 語法逐筆寫入 (當然速度奇慢無比,不仔細看還以為 App 掛了)

再來用常見的寫入方式

  • 透過 bulid xml 的方式組成 xml,在傳遞到 StoreProcedure 的作法 (這種一般我們都用來發送 xml 去源頭 Server 更新資料的動作,效率上應該會比第一種方式快了不少,畢竟少了 sql connection 連線次數,不過至於傳送參數最大長度有無限制這我就沒特別去確認)

而在 google 找到 DemoShop.使用SqlBulkCopy將資料批次寫入資料庫 裡面有非常清楚使用方式

  • SqlBulkCopy 的方式,寫入速度挺快的尤其資料量拉大的時候(會有一種我剛 app 有刷到數據的錯覺嗎?)

那由於 app 寫入上避免寫入重複數據,所以以往在 SQL 寫入判斷的 Exists 檢查,需要另外處理,那目前我的作法是前面的先進去撈資料並進行 filter,確認最終寫入的 DataRow 是沒有重複的,那這邊如果有其他人有更好的方式也歡迎分享。

 


如果有任何錯誤或者引用問題請麻煩告知 !!!