Мы пытаемся обработать документ JSON с помощью SQL Server 2019. При использовании приведенного ниже запроса для анализа документа JSON с помощью openrowset он преобразует специальные символы. Например, (Ó или Ñ) преобразуются в Ã’.
Запрос:
SELECT d.*
FROM OPENROWSET (BULK '\\drive\data.json', SINGLE_CLOB) X
CROSS APPLY OPENJSON (X.BulkColumn COLLATE Latin1_General_100_CI_AS_SC_UTF8, '$.Data')
WITH ([N] NVARCHAR(250) COLLATE Latin1_General_100_CI_AS_SC_UTF8) AS d
Какие еще есть варианты решения этой проблемы?
SINGLE_BLOB
выдает эту ошибку JSON text is not properly formatted. Unexpected character '' is found at position 0
.
а как насчет SINGLE_NCLOB?
Невозможно разобрать файл. Для SINGLE_NCLOB требуется входной файл UNICODE (widechar). Указанный файл не является Unicode.
Вы уверены? у него, кажется, есть какая-то спецификация?
Символ ''
в вашем предыдущем комментарии — это шестнадцатеричный код 7B 0A, который представляет собой однобайтовые символы для «{» и новой строки. Итак, вариант SINGLE_CLOB
правильный. Скорее всего, вам потребуется добавить параметр CODEPAGE = 'nnn' с соответствующим номером кодовой страницы, соответствующим вашему языковому стандарту (или любой другой кодировке или исходному файлу). Если вы откроете исходный файл в Notepad++, какой пункт меню «Кодировка> Наборы символов> Регион> Значение» даст вам правильное отображение?
Вместо этого попробуйте SINGLE_BLOB