快速將關係(規範化)數據表插入SQL Server 2008數據庫

c# linq-to-sql performance sqlbulkcopy sql-server-2008

我正在嘗試找到一種比我現在使用的Linq更好更快的方法來插入相當大量的數據(~50K行)。我正在嘗試寫入本地數據庫的數據位於從WCF序列化和接收的ORM映射數據列表中。我熱衷於使用SqlBulkCopy,但問題是表是規範化的,實際上是具有一對多關係的序列或互連表。

這裡有一些代碼說明了我的觀點:

foreach (var meeting in meetingsList)
    {
         int meetingId = dbAccess.InsertM(value1, value2...);
         foreach (var competition in meeting.COMPETITIONs)
         {
                int competitionId = dbAccess.InsertC(meetingid, value1, value2...);
                foreach(var competitor in competition.COMPETITORs)
                {
                       int competitorId = dbAccess.InsertCO(comeetitionId, value1,....)
                       // and so on
                }
         }
    }

其中dbAccess.InsertMeeting看起來像這樣:

// check if meeting exists
int  meetingId = GetMeeting(meeting, date);

if (meetingId == 0)
{
   // if meeting doesn't exist insert new
   var m = new MEETING
   {
       NAME = name,
       DATE = date
   }
   _db.InsertOnSubmit(m);
   _db.SubmitChanges();
}

提前感謝您的任何答案。博揚

一般承認的答案

我仍然會使用SqlBulkCopy將您的數據從外部文件快速復製到與文件具有相同(平面)結構的臨時表中(您需要提前創建該表)

加載後,您可以使用例如存儲過程或其他東西在多個表中拆分數據 - 應該非常快,因為服務器上的所有內容都已經存在。



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow