首页 > 解决方案 > T-SQL 使用 OpenRowSet 读取 nvarchar 中的 BulkColumn

问题描述

我在@jsonText包含特殊字符(例如西班牙语 n)时遇到问题。我相信这是因为它以某种格式SELECT BulkColumn FROM OPENROWSET返回 blob 。varchar我试图改变@json_Out采取,但是当我使用时nvarchar(MAX)会导致错误OPENJSON@jsonText

/* Dynamically read json path from i/p variable and perform the openrowset process */
DECLARE @jsonText NVARCHAR(MAX),
        @Command NVARCHAR(MAX),
        @Param_Def NVARCHAR(500),
        @FileVar NVARCHAR(MAX),
        @json_Out VARCHAR(MAX);


SET @FileVar = '\\s\storage\root\Health\To_ODS\IDC\Queue\92.json';
SET @Param_Def = N'@JSON_FILE NVARCHAR(MAX), @json_Out varchar(MAX) OUTPUT';
SET @Command = N'SELECT @json_Out = BulkColumn FROM OPENROWSET(BULK ''' + '\\s\storage\root\Health\To_ODS\IDC\Queue\92.json' + N''', SINGLE_BLOB, CODEPAGE=''65001'') ROW_SET';

EXEC sp_executesql @Command,
                   @Param_Def,
                   @JSON_FILE = @FileVar,
                   @json_Out = @jsonText OUTPUT;

SELECT * FROM openjson(@jsonText)

标签: sqljsonsql-server

解决方案


推荐阅读