[英]Bulkinsert from CSV into db (C#) -> max number of rows in a web application?
Web應用程序-C#、. Net,SQL 2k5。 我最近在另一個應用程序上使用了bullkinsert,我想嘗試一下。
我將收到一個包含1000行的CSV文件,這很可能會在數據庫中添加50萬(即五十萬)條記錄。 我還不知道這筆巨款是否能順利解決。 恐怕它會超時。
我還沒有做任何測試,但是我很確定它最終會超時。
有沒有一種方法可以使它不超時(我不知道...將bulkinsert分成1000個:D),或者我應該嘗試通過SQL作業來執行類似BCP的操作...
我最近使用c#和SqlBulkCopy類開發了少量批量插入功能。 為了避免頁面超時,我使用ThreadPool(ThreadPool.QueueUserWorkItem方法)進行了異步處理。 使用新的連接對象將上載狀態添加到日志表,以避免事務回滾日志。 然后使用“上傳歷史記錄”頁面在網站中報告此狀態。
最好的解決方案是創建一個使用BulkInsert命令的過程。 這是proc的示例代碼:
CREATE PROCEDURE [dbo].[usp_ExecuteBulkInsertTask]
(
@dataFile VARCHAR(255),
@bulkInsertFormatFile VARCHAR(255),
@tableName VARCHAR(255)
)
AS
BEGIN
BEGIN TRY
DECLARE @SQL Varchar(4000)
SET @SQL = 'BULK INSERT ' + @tableName + ' FROM ''' + @dataFile + ''' WITH (formatfile=''' + @bulkInsertFormatFile + ''', FIRSTROW=2)'
EXEC sp_sqlexec @SQL
END TRY
BEGIN CATCH
--error handling
END CATCH
END
實際上,拆分插入似乎是個好主意。 我會使用更大的塊,例如5000個或更多。
我建議您不要嘗試在單個Web服務調用中處理文件。
-要么-
如果創建WF / WCF工作流服務,您可以一口氣完成這兩項工作,該服務可以像Web服務一樣直接在IIS中托管,但是它可以執行多種操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.