2017-06-07 34 views
1

我正在使用SqlDataReader進行數據遷移。如何增加一次插入目標的記錄數?如何在C#中更改SqlDataReader的緩衝區大小?

+1

但是... sqldatareader不會*做*插入...所以:你用什麼*插入?如果它是類似sqlbulkcopy的,那*表示*有多種調整批量大小的方法(即:緩衝區大小) - 最重要的是'.BatchSize' –

+0

說實話我不明白,你想要什麼: - | – CHS

+0

我認爲OP意味着他希望增加用於將記錄「插入」到目的地(數據庫=源,客戶端=目的地)的緩衝區,以便讀取記錄。我不知道,但我認爲這取決於您不能以編程方式和數據庫驅動程序([通常8kilobytes](https://stackoverflow.com/a/1383961/284240))更改的網絡緩衝區。 –

回答

0

我想增加一次插入到目標的記錄數。

然後,這與SqlDataReader無關,您需要查看您用於插入的任何工具。如果您使用SqlBulkCopy,那麼這應該與更改.BatchSize一樣簡單。如果您使用其他機制,則必須具體。例如,如果您使用SP來執行一次只能處理一行的插入操作,則一個選項可能是使用MARS並重疊async操作;我有一種實用方法,我用這種順序固定深度重疊(即非常不同於Parallel.ForEach會做的,例如,即使是固定的最大DOP)。如果您使用通過基於TDS的表參數工作的插入,那麼:在調用操作之前,在本地緩存大量數據。如果您使用的是ORM,例如EF:請參閱ORM的插入文檔。

但是:要強調的是:不是得到這個數據的投票是:數據讀取器。

+0

實際要求是將數據從sql server遷移到postgres.Code使用sqldatareader從源讀取數據並使用npgsql將數據插入到destination.its中,默認情況下,sqldatareader一次可以容納8kb數據(不確定).i想要知道sqldatareader可以同時處理多少數據,並且可以增加......全部在一臺服務器上完成,而不是在網絡中完成。 – saju