Как сменить кодировку xml-файла с помощью хранимой процедуры SQL?
Пытаюсь сделать процедуру с параметром(путь к файлу), добавляющую в таблицу данные из xml-файла. Нужно, чтобы процедура меняла кодировку файла(с UTF-8 на Windows-1251). Подскажите, пожалуйста, как это сделать?
(P.S. В файлах кириллица отображается некорректно, рандомные символы или знаки вопроса)
ALTER PROCEDURE [dbo].[LoadXMLFile_manufactures]
@path_file NVARCHAR(255)
AS
BEGIN
DECLARE @SQL NVARCHAR(MAX);
DECLARE @XMLData XML;
SET @SQL = '
SELECT @XMLData = BulkColumn
FROM OPENROWSET(BULK ''' + @path_file + ''', SINGLE_BLOB) AS x;'
EXEC sp_executesql @SQL, N'@XMLData XML OUTPUT', @XMLData OUTPUT
MERGE INTO dbo.manufactures as target_mnftrs
USING (
SELECT
DataXml.value('id[1]','INT') as id,
DataXml.value('name[1]','NVARCHAR(MAX)') as name,
DataXml.value('created_date[1]','DATETIME') as created_date,
DataXml.value('last_update_date[1]','DATETIME') as last_update_date
FROM @XMLData.nodes('/root/manufacturers/manufacturer') AS T(DataXml)
) as source_mnftrs
ON target_mnftrs.id = source_mnftrs.id
WHEN MATCHED THEN UPDATE SET
target_mnftrs.name = source_mnftrs.name,
target_mnftrs.created_date = source_mnftrs.created_date,
target_mnftrs.last_update_date = source_mnftrs.last_update_date
WHEN NOT MATCHED THEN INSERT
(id, name, created_date, last_update_date)
VALUES
(source_mnftrs.id, source_mnftrs.name, source_mnftrs.created_date, source_mnftrs.last_update_date);
END