我可以用Linq-to-SQL做一个非常大的插入吗?

Jac*_*ope 2 c# sql-server-2005 linq-to-sql

我有一些文本数据,我使用这种方法使用Linq-to-SQL加载到SQL Server 2005数据库中(伪造代码):

Create a DataContext

While (new data exists)
{
    Read a record from the text file

    Create a new Record 

    Populate the record

    dataContext.InsertOnSubmit(record);
}

dataContext.SubmitChanges();
Run Code Online (Sandbox Code Playgroud)

代码是一个小C#控制台应用程序.到目前为止这个工作正常,但我要导入真实数据(而不是测试子集),这包含大约200万行而不是我测试过的1000行.我是否必须做一些聪明的批处理或类似的事情,以避免代码崩溃或表现糟糕,或者Linq-to-SQL应该优雅地处理这个问题?

Pet*_*ter 7

看起来这样可行但是DataContext保留的更改(以及因此内存)将随着每个InsertOnSubmit而增长.也许建议每100条记录执行一次SubmitChanges?

我还要看一下SqlBulkCopy,看看它是否更适合你的用例.


mar*_*c_s 5

如果您需要进行批量插入,您应该检查SqlBulkCopy

Linq-to-SQL并不适合进行大规模批量插入.