2015-04-17 94 views
2

我有一個Windows窗體應用程序來自動化某些任務,一部分是用大量的信息填充SQL Server表(有時少於10,但我看到一個超過1000行的情況!)列表(T)與DataTable填充數據庫

今天我有一個List(of T)來執行這個任務。 「T」是一個有8個字符串參數的類。

在「保存」功能我解析列表構造一個SQL查詢插入一個表中的信息。

但是在DB中插入的過程有時需要幾秒鐘才能完成,即使只有幾行插入,特別是在SQL服務器過載的情況下。使用帶有8個字符串列的DataTable來存儲數據並用於填充數據庫更好嗎?我也很欣賞其他建議。

問候

+0

插入超過1000條記錄可能會持續幾秒鐘。那太久了?你可以使用'DataTable'並設置數據適配器的['UpdateBatchSize'](https://msdn.microsoft.com/en-us/library/system.data.common.dbdataadapter.updatebatchsize%28v=vs.110%29 .aspx)爲1000.這應該更有效率。但'SQLBulkCopy'是最有效的方法。 –

回答

3

在VB側使用的結構不會有所作爲。 如果你想要一個更快的方法,你可以看看SQLBulkCopyClass來幫助你。

https://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlbulkcopy%28v=vs.110%29.aspx

+0

這個SQLBulkCopyClass非常有趣。解決這個問題,因爲直接接受一個DataTable並且似乎適用於其他項目,我在其中有幾個「excel to SQL」導入類。唯一的問題是某些外部客戶端數據庫,只能通過WebService或VPN訪問,並且需要傳遞普通SQL插入。 –