如何将大量数据发送到SqlServer存储过程

时间:2015-11-26 10:55:21

标签: c# .net sql-server stored-procedures sqlbulkcopy

我想从基于.Net的应用程序向SQL Server发送大量数据。此数据记录来自CSV文件,应通过SQL Server端的存储过程进行汇总。我知道SqlBulkCopy,但SqlBulklCopy直接写入表。意思是,它不适用于我。我发言超过100.000.000。我无法在内存中保存这么多数据。理想情况下,我问是否存在从.Net到存储过程的某种流数据。我很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为你正在寻找Table-Valued Parameters。有足够的文档说明如何在数据库中创建TVP类型并在存储过程中使用它。设置SqlParameter时,您可以提供IEnumerable<SqlDataRecord>,它可以通过C#迭代器函数轻松提供,直接逐个读取CSV文件数据记录,并为每个记录,解析,转换和生成相应的SqlDataRecord。在Sql Server端,数据仍然会在传递给存储过程之前批量插入tempdb,但至少在客户端,您不需要内存来保存所有数据。