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

Откуда: ближайшее заМКАДье
Сообщений: 4804
Коллеги, добрый день. Появилась задача выгрузки данных в формате xml. Решил попробовать сделать напрямую из БД.
с помощью FOR XML EXPLICIT построил нужный формат выгрузки. Отображаю xml в студии, все корректно.

Выгружаю с небольшим набором данных через:
exec xp_cmdshell 'bcp "exec myproc' " queryout \\...\Program\tmp\file.xml -c -T -C RAW'

Параметр -C RAW, т.к. мне вообще нужно в utf-8, но в справке написано, эту кодовую страницу нельзя указывать.
Поэтому внутри хранимки есть конвертация из Win1251 в utf-8 строковых данных.

Все корректно, файл открывается в браузере.

Выгрузил данных побольше, файл не распознался браузером, как корректный xml.
Открыл в notepade++, включил отображение символов конца строки.
А там перенос строк от балды(ну или я не знаю, по какому правилу) и в конце символ переноса CRLF.
Во вложении отобразил.

Подозреваю, что затык где-то в bcp. Подскажите, куда копать?
---
Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с)

К сообщению приложен файл. Размер - 58Kb
19 мар 19, 16:11    [21837508]     Ответить | Цитировать Сообщить модератору
 Re: Корректная выгрузка xml-файла через bcp  [new]
aleks222
Member

Откуда:
Сообщений: 696
Megabyte
Подозреваю, что затык где-то в bcp. Подскажите, куда копать?


Канешно, виноват кто угодно, только не ты.

Копать вам в сторону "внутри хранимки есть конвертация из Win1251 в utf-8 строковых данных.".
19 мар 19, 16:15    [21837512]     Ответить | Цитировать Сообщить модератору
 Re: Корректная выгрузка xml-файла через bcp  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4804
aleks222
Megabyte
Подозреваю, что затык где-то в bcp. Подскажите, куда копать?


Канешно, виноват кто угодно, только не ты.

Копать вам в сторону "внутри хранимки есть конвертация из Win1251 в utf-8 строковых данных.".

Где вы увидели, что я кого-то обвиняю, кроме себя?

Ну вот я убрал конвертацию в utf-8, выгрузил, ничего не изменилось. На переносы это никак не повлияло.
Что еще посоветуете?
19 мар 19, 16:22    [21837519]     Ответить | Цитировать Сообщить модератору
 Re: Корректная выгрузка xml-файла через bcp  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4804
2aleks222: Я так понимаю, заходили просто так, лишь бы что-то ляпнуть...
19 мар 19, 16:29    [21837525]     Ответить | Цитировать Сообщить модератору
 Re: Корректная выгрузка xml-файла через bcp  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4804
Победил так:
REPLACE(CAST(@result AS NVARCHAR(MAX)), '/>', '/>'+CHAR(13)+CHAR(10))

Сконвертил xml-результат в строку и тупо добавил в конце каждого закрывающего тэга символы переноса.
В итоге получился корректный xml-документ.
19 мар 19, 17:15    [21837589]     Ответить | Цитировать Сообщить модератору
 Re: Корректная выгрузка xml-файла через bcp  [new]
aleks222
Member

Откуда:
Сообщений: 696
Megabyte
Победил так:
REPLACE(CAST(@result AS NVARCHAR(MAX)), '/>', '/>'+CHAR(13)+CHAR(10))

Сконвертил xml-результат в строку и тупо добавил в конце каждого закрывающего тэга символы переноса.
В итоге получился корректный xml-документ.

Сказочники атакуют!

Символы переноса нужны в XML даже меньше, чем пятая нога собаке.
19 мар 19, 17:23    [21837597]     Ответить | Цитировать Сообщить модератору
 Re: Корректная выгрузка xml-файла через bcp  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4804
aleks222
Megabyte
Победил так:
REPLACE(CAST(@result AS NVARCHAR(MAX)), '/>', '/>'+CHAR(13)+CHAR(10))

Сконвертил xml-результат в строку и тупо добавил в конце каждого закрывающего тэга символы переноса.
В итоге получился корректный xml-документ.

Сказочники атакуют!

Символы переноса нужны в XML даже меньше, чем пятая нога собаке.

Сам пробовал выгружать xml, собранный через FOR XML EXPLICIT через bcp? Или теоретик?
19 мар 19, 18:01    [21837637]     Ответить | Цитировать Сообщить модератору
 Re: Корректная выгрузка xml-файла через bcp  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 6536
Megabyte,

скорее всего, Вы что-то неправильно делаете в своем скрипте. Если бы проблемы были на стороне Microsoft, они бы уже давно разорились.
19 мар 19, 18:01    [21837638]     Ответить | Цитировать Сообщить модератору
 Re: Корректная выгрузка xml-файла через bcp  [new]
aleks222
Member

Откуда:
Сообщений: 696
Megabyte
aleks222
пропущено...

Сказочники атакуют!

Символы переноса нужны в XML даже меньше, чем пятая нога собаке.

Сам пробовал выгружать xml, собранный через FOR XML EXPLICIT через bcp? Или теоретик?


Открою тебе страшную тайну!
XML ничем не отличается от любой другой строки символов.
19 мар 19, 18:59    [21837689]     Ответить | Цитировать Сообщить модератору
 Re: Корректная выгрузка xml-файла через bcp  [new]
Megabyte
Member

Откуда: ближайшее заМКАДье
Сообщений: 4804
Владислав Колосов
Megabyte,

скорее всего, Вы что-то неправильно делаете в своем скрипте. Если бы проблемы были на стороне Microsoft, они бы уже давно разорились.

В студии же можно открыть xml и он корректный. Если я что и делал не так, то видимо как-то не так задавал параметры в bcp при выгрузке. Ну у меня уже идеи закончились.

Но, в общем, главное, задачу решил. :) Хотя канеш костыльно как-то.
19 мар 19, 21:03    [21837777]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить