我在另一台SQL服务器上有一个表,我需要在一夜之间复制它。目标表的结构非常相似,所以我将使用类似下面的代码。 来源 - http://forums.asp.net/t/1322979.aspx/1
我还没有尝试过,但在linq中有更好/更快的方法吗?
//there exist two table list and listSecond
DataClassesDataContext dataClass = new DataClassesDataContext(); //create the instance of the DataContext
var str = from a in dataClass.lists select a;
foreach (var val in str) // iterator the data from the list and insert them into the listSecond
{
listSecond ls = new listSecond();
ls.ID = val.ID;
ls.pid = val.pid;
ls.url = val.url;
dataClass.listSeconds.InsertOnSubmit(ls);
}
dataClass.SubmitChanges();
Response.Write("success");
答案 0 :(得分:4)
使用LINQ插入大量数据并不是一个好主意,除非复杂的模式在复制之前需要进行大量转换。除了将它们全部记录在事务日志中之外,它还将为插入的每一行创建单独的查询。
可以找到更快的解决方案here - 它使用SqlBulkCopy
,这是一种在单个查询中插入大量数据的方法,无需事务记录就可以减慢速度。它将一个数量级更快,我告诉你这两种方法的个人经验。