第一次使用 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 是沒有重複的,那這邊如果有其他人有更好的方式也歡迎分享。
如果有任何錯誤或者引用問題請麻煩告知 !!!