我有一個代碼提交大量的數據行到數據庫(sql 2008 R2)使用c#應用程序的問題。使用c寫入大量或行到mssql數據庫#
我現在正在做的是創建一個相當大的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或類似的方法。
親切的問候 德魯
您使用SQL Server 2008嗎?表值參數應該有相當大的幫助。 – ChaosPandion 2013-03-05 13:01:56
如果你插入了大量的數據,我建議你看看'SqlBulkCopy'類 – Kane 2013-03-05 13:03:17
一個事務中的所有40.000行?如果是這樣,他們必須在一個交易? – mortb 2013-03-05 13:03:24