我想text
从 MS SQL Server 中获取 300MB 的数据(列),但是对于我正在使用的库,一旦我尝试访问该字段,就会出现内存不足的异常。不幸的是,我被绑定到那个库,不能切换到别的东西。
我尝试使用 获取块SUBSTRING()
,但返回varchar
并且最大 len 为 8000,因此以 8K 的块获取 300MB 将需要很长时间。
有没有其他方法可以做到这一点?如果我可以在 3x 100MB 块中获得 300MB 就可以了,100MB 似乎不会引发异常。也许以某种方式拆分数据服务器端?
MS SQL Server 版本是 14.0.3436.1
提前致谢
SUBSTRING
返回不超过 8000 个字符的原因是因为您使用的是不推荐使用的text
数据类型。改为用于varchar(MAX)
大值,这允许使用标准 T-SQLSUBSTRING
函数返回更大的值。text
以较小的块从遗留列中读取数据的正确方法是使用READTEXT
语句。下面是从文档中收集的示例,其中起始位置和长度参数化(整数参数类型)。当然,您需要首先获取值的长度以避免读取超出值的末尾。我假设您的
SUBSTRING
尝试已经这样做了,但这只是一个猜测,没有看到您的代码。