快速将关系(规范化)数据表插入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
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因