C# 将大型csv文件插入数据库

C# 将大型csv文件插入数据库,c#,asp.net,file-upload,csv,C#,Asp.net,File Upload,Csv,我们在网络上有一个应用程序,必须允许用户上传带有邮政编码的文件,这些文件是.csv文件。任何用户都可以从他们的计算机上传该文件,问题是该文件可能包含数千条记录。现在我正在获取文件,确保它具有正确的标题,但我正在将记录一个一个地推送到数据库中 我使用的是c#asp.net,有没有更好的方法可以做到这一点?从代码上看更有效?。我们不能使用任何外部导入器、数据导入器或sql server business intelligence之类的工具。我怎么能做到这一点?我在读一些关于把它放在内存中,然后把它推

我们在网络上有一个应用程序,必须允许用户上传带有邮政编码的文件,这些文件是.csv文件。任何用户都可以从他们的计算机上传该文件,问题是该文件可能包含数千条记录。现在我正在获取文件,确保它具有正确的标题,但我正在将记录一个一个地推送到数据库中

我使用的是c#asp.net,有没有更好的方法可以做到这一点?从代码上看更有效?。我们不能使用任何外部导入器、数据导入器或sql server business intelligence之类的工具。我怎么能做到这一点?我在读一些关于把它放在内存中,然后把它推到数据库中的东西?。任何网址,例子或建议将不胜感激


关于

如果其中包含多达一百万条记录,最好创建一个服务来管理向数据库中插入记录的过程,以避免超时并防止web iis压力

如果将其设置为windows服务,则可以通知该服务处理其上载的特定目录中的zip文件

另外,我建议使用大容量插入来实现更快的数据库事务


如果有验证,您可能可以将数据暂存到另一个数据库中,并验证数据,然后推送到最终的数据库。

首先,我很确定您要问的实际上是“如何处理一个大文件并将处理后的数据插入数据库?”

现在假设我是对的,我会说这个问题类似于‘一根绳子有多长?’。实际情况是,将大型文件处理到数据库中的实现非常特定于您的需求

但是,在最简单的情况下,您只需将文件直接上载到表(或文件夹)中,并创建一个每x分钟运行一次、遍历表、拾取每个文件并使用大容量插入和处理数据的数据库(这可能会给您带来一些性能优势)

或者,您可以查看类似的内容,并将任何上载的文件直接保存到队列中,该队列完全独立于您的应用程序,可以在任何时间点进行处理,并且可以轻松地进行扩展


不过,老实说,我不认为这里的任何人都能给你一个“正确”的答案,因为实际上没有一个答案,你只能通过实验来找到实现的改进。

因为这些记录在同一个表中,彼此之间没有关联,这可能是一个有效的答案。假设您有一个将单个记录插入数据库的静态方法(可能不一定需要是静态的),您可以在数组上运行循环,其中数组的每个索引表示一行CSV

这假设将大文件上载到服务器不是最初的问题。如果这也是问题的一部分,我建议先压缩文件,然后在上传后使用类似的方法解压缩。由于文本压缩效果很好,从用户的角度来看,这可能是对性能的最大好处