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

How to send large amount of Data To SqlServer Stored Procedure

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

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