Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 экспорт в XML файл из SQL, изменение кодировки на WINDOWS-1251  [new]
DenisKlementiev
Member

Откуда:
Сообщений: 62
Поможите люди добрые!
Никогда с XML не работал.
Задача следующая:

С помощью bcp выгружаю из базы xml файл. Как известно sql выгружает в кодировке UTF-8 а мне нужна Windows 1251.
Выгружаемый файл имеет строку <?xml version="1.0"> без указания кодировки, а мне надо, чтобы эта строка выглядела как <?xml version="1.0" encoding="WINDOWS-1251"?>

Что делать ума не приложу, так как с xml еще не сталкивался. Куда копать? Для меня лучшее решение было бы в связке с SSIS. Так как сама выгрузка файла формируется SSIS.
7 авг 11, 19:23    [11082906]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в XML файл из SQL, изменение кодировки на WINDOWS-1251  [new]
WadimX
Member

Откуда: Saint-Petersburg
Сообщений: 41
DenisKlementiev,

FOR XML + COLLATE может помочь.
8 авг 11, 12:38    [11085042]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в XML файл из SQL, изменение кодировки на WINDOWS-1251  [new]
DenisKlementiev
Member

Откуда:
Сообщений: 62
vbscript

Dim myStream, myConnection, myCommand, stx, srez 
Set myStream = CreateObject("ADODB.Stream")
Set myConnection = CreateObject("ADODB.Connection")
Set myCommand = CreateObject("ADODB.Command")
myConnection.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;" & _
"Persist Security Info=False;Initial Catalog=База Данных;Data Source=Сервер"
myCommand.ActiveConnection=myConnection
myCommand.CommandText="dbo.get_xml"
myCommand.Properties("Output Encoding").Value = "windows-1251"
myStream.Open
myCommand.Properties("Output Stream") = myStream
myCommand.Execute ,,1024 'instead of adExecuteStream
myStream.Position=0
myStream.Charset="WINDOWS-1251"
Dim strxml
strxml = (Trim(myStream.ReadText))
stx = "<?xml version=" & Chr(34) & "1.0" & Chr(34) & " encoding=" & Chr(34) & "windows-1251" & Chr(34) & "?>"
srez = stx & strxml
Dim fso, MyFile
Set fso = CreateObject("Scripting.FileSystemObject")
Set MyFile = fso.CreateTextFile("C:\имя файла.xml", True)
MyFile.WriteLine(Trim(srez))
MyFile.Close
26 авг 11, 02:43    [11182069]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: экспорт в XML файл из SQL, изменение кодировки на WINDOWS-1251  [new]
Георгий Францкевич
Member

Откуда:
Сообщений: 3
WadimX,
FOR XML и COLLATE не совместимы в SELECT
Сам как раз сейчас бьюсь над этим.
С входной кодировкой на базе *General*Latin* чего-то там. И изменить ее нельзя...

Пока перепробовал все select для for xml предварительно с правильным collate и вызов из другой дружественнной БД с правильным collation.
Не помогло. Следующий шаг collate на каждое поле, но может народ попроще вариант нашел?
12 июл 18, 16:17    [21566462]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в XML файл из SQL, изменение кодировки на WINDOWS-1251  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7403
Георгий Францкевич,

энкодеров в инете как грязи. Выгружайте и перекодируйте. Заголовок поменяйте на 1251.
12 июл 18, 16:58    [21566649]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить