Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Корректная выгрузка xml-файла через bcp / 10 сообщений из 10, страница 1 из 1
19.03.2019, 16:11
    #39788530
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
Коллеги, добрый день. Появилась задача выгрузки данных в формате xml. Решил попробовать сделать напрямую из БД.
с помощью FOR XML EXPLICIT построил нужный формат выгрузки. Отображаю xml в студии, все корректно.

Выгружаю с небольшим набором данных через:
Код: sql
1.
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. Подскажите, куда копать?
---
Проходя мимо разложенных граблей, ты теряешь драгоценный опыт. (с)
...
Рейтинг: 0 / 0
19.03.2019, 16:15
    #39788531
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
MegabyteПодозреваю, что затык где-то в bcp. Подскажите, куда копать?

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

Копать вам в сторону "внутри хранимки есть конвертация из Win1251 в utf-8 строковых данных.".
...
Рейтинг: 0 / 0
19.03.2019, 16:22
    #39788534
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
aleks222MegabyteПодозреваю, что затык где-то в bcp. Подскажите, куда копать?

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

Копать вам в сторону "внутри хранимки есть конвертация из Win1251 в utf-8 строковых данных.".
Где вы увидели, что я кого-то обвиняю, кроме себя?

Ну вот я убрал конвертацию в utf-8, выгрузил, ничего не изменилось. На переносы это никак не повлияло.
Что еще посоветуете?
...
Рейтинг: 0 / 0
19.03.2019, 16:29
    #39788536
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
2aleks222: Я так понимаю, заходили просто так, лишь бы что-то ляпнуть...
...
Рейтинг: 0 / 0
19.03.2019, 17:15
    #39788558
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
Победил так:
Код: sql
1.
REPLACE(CAST(@result AS NVARCHAR(MAX)), '/>', '/>'+CHAR(13)+CHAR(10))


Сконвертил xml-результат в строку и тупо добавил в конце каждого закрывающего тэга символы переноса.
В итоге получился корректный xml-документ.
...
Рейтинг: 0 / 0
19.03.2019, 17:23
    #39788562
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
MegabyteПобедил так:
Код: sql
1.
REPLACE(CAST(@result AS NVARCHAR(MAX)), '/>', '/>'+CHAR(13)+CHAR(10))


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

Символы переноса нужны в XML даже меньше, чем пятая нога собаке.
...
Рейтинг: 0 / 0
19.03.2019, 18:01
    #39788581
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
aleks222MegabyteПобедил так:
Код: sql
1.
REPLACE(CAST(@result AS NVARCHAR(MAX)), '/>', '/>'+CHAR(13)+CHAR(10))


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

Символы переноса нужны в XML даже меньше, чем пятая нога собаке.
Сам пробовал выгружать xml, собранный через FOR XML EXPLICIT через bcp? Или теоретик?
...
Рейтинг: 0 / 0
19.03.2019, 18:01
    #39788582
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
Megabyte,

скорее всего, Вы что-то неправильно делаете в своем скрипте. Если бы проблемы были на стороне Microsoft, они бы уже давно разорились.
...
Рейтинг: 0 / 0
19.03.2019, 18:59
    #39788609
aleks222
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
Megabytealeks222пропущено...

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

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

Открою тебе страшную тайну!
XML ничем не отличается от любой другой строки символов.
...
Рейтинг: 0 / 0
19.03.2019, 21:03
    #39788660
Megabyte
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Корректная выгрузка xml-файла через bcp
Владислав КолосовMegabyte,

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

Но, в общем, главное, задачу решил. :) Хотя канеш костыльно как-то.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Корректная выгрузка xml-файла через bcp / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]