从CSV批量插入数据库(C#)->;web应用程序中的最大行数?

从CSV批量插入数据库(C#)->;web应用程序中的最大行数?,c#,asp.net,bulkinsert,bcp,C#,Asp.net,Bulkinsert,Bcp,Web应用程序-C#,.Net,SQL2K5。 我最近在另一个应用程序上使用了bulkinsert,我想尝试一下 我将收到一个包含1000行的CSV文件,它很可能会在数据库中添加500000条(即五十万条)记录。 我还不知道这笔巨款是否能顺利实施。恐怕会超时 我还没有做任何测试,但我很确定它最终会超时 有没有办法让它不超时(我不知道…将bulkinsert拆分为1000个部分:D)或者我应该尝试使用SQL作业执行类似BCP的操作…实际上,拆分插入似乎是个好主意。 我会使用更大的块,比如5000块

Web应用程序-C#,.Net,SQL2K5。 我最近在另一个应用程序上使用了bulkinsert,我想尝试一下

我将收到一个包含1000行的CSV文件,它很可能会在数据库中添加500000条(即五十万条)记录。 我还不知道这笔巨款是否能顺利实施。恐怕会超时

我还没有做任何测试,但我很确定它最终会超时


有没有办法让它不超时(我不知道…将bulkinsert拆分为1000个部分:D)或者我应该尝试使用SQL作业执行类似BCP的操作…

实际上,拆分插入似乎是个好主意。
我会使用更大的块,比如5000块或者更多。

我建议您不要试图在一次web服务调用中处理该文件

  • 创建一个上载操作以接受文件并将其保存在某处,创建一个GetProgress操作以允许客户端检查加载进度/在必要时重试
  • 创建一个后台进程来完成实际工作,比如windows服务
  • -或-


    如果您创建一个WF/WCF工作流服务,您可以像web服务一样直接在IIS中托管它,但它可以执行多个操作,那么您可以一次完成这两个任务。

    我最近使用c#和SqlBulkCopy类开发了smiliar bulkinsert功能。为了避免页面超时,我使用ThreadPool(ThreadPool.QueueUserWorkItem方法)进行了异步处理。上载状态使用新的连接对象添加到日志表中,以避免日志的事务回滚。然后,使用上载历史页面在网站中报告此状态

    最好的解决方案是创建一个使用BulkInsert命令的过程。以下是该过程的示例代码:

    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
    

    我遗漏了一些东西,1000行CSV如何创建500000条记录?关于bulkinsert,我不了解什么?如果您没有测试它:测试它,如果您有问题,请返回。;-)1000 - 500 000. 怎样?这算什么?相信我。这就是我所想的,但不确定在浏览器中会是什么样子。“1减150”:)我正在考虑将该文件拆分为50条10000条记录。制作50个文件,导入一个,刷新整个屏幕并显示在临时表中,类似于“进度”