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

本文关键字:SqlServer 存储过程 数据 | 更新日期: 2023-09-27 18:24:25

我想从基于.Net的应用程序向SQL Server发送大量数据。这些数据记录来自CSV文件,应该通过SQL Server端的存储过程进行传递。我知道SqlBulkCopy,但SqlBulklCopy直接写入表。意思是,它对我来说不可用。我是从100000多家唱片公司发言的。我将无法在内存中保存这么多数据。因此,理想情况下,我会问是否存在某种从.Net到存储过程的流式数据。我很感激你的帮助。

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

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