如何将3GB JSON文件完整插入SQL Server单列?遇LOB大小限制报错
解决3GB JSON文件插入SQL Server单个列的问题
你遇到的错误是因为SINGLE_CLOB会将文件读取为VARCHAR(MAX)类型,而该类型的最大存储上限为2GB(2147483647字节),3GB的文件显然超出了这个限制。
将整个3GB文件存入单个列完全可行,只需更换支持更大存储的类型和读取方式:
创建包含
VARBINARY(MAX)类型列的表(该类型最大存储上限可达2TB,足以容纳3GB文件):CREATE TABLE Temp (FullJson VARBINARY(MAX)) GO使用
SINGLE_BLOB替代SINGLE_CLOB读取文件并插入表中:INSERT INTO Temp (FullJson) SELECT BulkColumn FROM OPENROWSET(BULK '##path_to_json_file##', SINGLE_BLOB) AS j
如果后续需要读取并解析JSON内容,可通过CAST或CONVERT将二进制数据转换为字符类型,但需注意:若JSON内容本身超过1GB(NVARCHAR(MAX)为双字节编码,最大对应1GB字符),直接转换会触发新的容量限制,这种情况下建议按需读取部分内容处理,或保持二进制存储形式。
同时要确保SQL Server数据库的文件组有足够存储空间,且未限制LOB数据的存储大小。
内容的提问来源于stack exchange,提问作者Riomare
相关产品推荐
相关产品推荐

