我在使用 ac# 应用程序将大量数据行提交到数据库(sql 2008 R2)的代码时遇到问题。
我现在正在做的是创建一个相当大的 XML 文件(大约 30Mb),其中包含大约 40.000 行应该插入到数据库中。
从我作为变量传递给数据库的这个 xml 文档中,我有一个存储过程,它将从中读取数据并进行适当的插入或更新。
伪c#代码:
String xml = xmlWriter.ToString();
SqlCommand cmd = new SqlCommand("sp_CommitData", connection)
cmd.Variables.AddWithValue("@xml", xml);
SqlDataReader reader = cmd.ExecuteReader();
while(reader.Read())
{
/* Read return data */
}
伪tsql代码:
INSERT INTO DataTable
xmldata.value('@uID','[uniqueidentifier]') AS [uID]
FROM<
@xml.nodes('/data/m/r') [xmldata](xmldata)
这种方法在过去对我来说效果很好,但现在数据似乎对于这种工作方法来说非常庞大......提交数据需要超过 3 分钟,而这只是很长的时间。:(
这一定是一个很常见的问题,你们在类似的情况下是怎么做的?您对如何使用 c# 提交大量数据有什么好的建议吗?该解决方案必须是线程安全的,所以我不太喜欢 bcp 或类似方法。
亲切的问候德鲁