代码之家  ›  专栏  ›  技术社区  ›  TheBoyan

将关系(规范化)数据表快速插入到SQL Server 2008数据库中

  •  2
  • TheBoyan  · 技术社区  · 15 年前

    我正试图找到一种比我现在使用的LINQ更好更快地插入大量数据(大约5万行)的方法。 我试图写入本地数据库的数据位于从WCF序列化和接收的ORM映射数据列表中。 我热衷于使用sqlbackcopy,但问题是表是规范化的,实际上是一个序列或具有一对多关系的互联表。

    下面是一些说明我观点的代码:

    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();
    }
    

    提前谢谢你的回答。 博然

    1 回复  |  直到 14 年前
        1
  •  4
  •   marc_s    15 年前

    我还是会用的 SqlBulkCopy 将数据从外部文件快速复制到 分级表 与文件具有相同的(平面)结构(需要提前创建该表)

    一旦加载了数据,就可以使用存储过程或其他方法将数据拆分到多个表中,因为服务器上已经有了所有数据,所以速度应该相当快。