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

Откуда:
Сообщений: 5
Добрый день.
Есть скрипт, который формирует файл в формате xml.
В нем одна строка, но длинная. При отработке скрипта в studio, файл (точнее закладка "результат" и далее если его сохранить формируется корректно, но при выполнении задания:

EXEC Master..xp_CmdShell 'sqlcmd -S(local) -d name_bd -E -i C:\1.sql -o C:\1.xml '

появляются лишние переносы строки через 2033 символа (включая пробелы)

В чем может быть причина ?

PS: скрипт написан не мной.


Нашел на форуме:
sqlcmd -S (local) -d [ИМЯ_ВАШЕЙ_БД]
-E -i sqlq.sql -o c:\ИМЯ_ФАЙЛА.xml -f 1251


добавил, но что то в моем случае безрезультатно sad
7 сен 15, 06:31    [18116779]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Jaffar
Member

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

может сделать
set @XML = stuff(@XML, 2033, 1, '') - и далее в цикле.
7 сен 15, 10:07    [18117127]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Glory
Member

Откуда:
Сообщений: 104751
Oleg_TLC
В чем может быть причина ?

А где вы задали разделитель записей ?. Который по-умолчанию и есть newline
7 сен 15, 10:15    [18117161]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Oleg_TLC
Member

Откуда:
Сообщений: 5
Jaffar
Oleg_TLC,

может сделать
set @XML = stuff(@XML, 2033, 1, '') - и далее в цикле.


это в самом скрипте получается надо добавить ?
7 сен 15, 12:36    [18117998]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Oleg_TLC
Member

Откуда:
Сообщений: 5
Glory
Oleg_TLC
В чем может быть причина ?

А где вы задали разделитель записей ?. Который по-умолчанию и есть newline


В том-то и дело, что его нет, а перенос появляется сам через 2033 символа.
Программисты, что писали этот скрипт, говорят, что у них на тестовом сервере все ок, говорят возможно у нас не все обновления установлены...

Да кстати, все это на sql 2012.
7 сен 15, 12:39    [18118022]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Glory
Member

Откуда:
Сообщений: 104751
Oleg_TLC
В том-то и дело, что его нет

Если вы не задали разделитель строк, то это не значит, что его нет
7 сен 15, 12:43    [18118037]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Jaffar
Member

Откуда:
Сообщений: 633
Oleg_TLC
Jaffar
Oleg_TLC,

может сделать
set @XML = stuff(@XML, 2033, 1, '') - и далее в цикле.


это в самом скрипте получается надо добавить ?



ну да кэп так и есть. - добавь после формирования XML`я

declare @i int set @i = 1
while(2033 * i <= len(@XML))
begin
 set @XML = stuff(@XML, 2033*i, 1, ' ')
 set @i = @i + 1
end
7 сен 15, 13:34    [18118375]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Glory
Member

Откуда:
Сообщений: 104751
Jaffar
ну да кэп так и есть. - добавь после формирования XML`я

С чего вы решили, что у ТС-а что-то неправильно с XML ?
7 сен 15, 13:46    [18118457]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1836
Glory
Oleg_TLC
В том-то и дело, что его нет

Если вы не задали разделитель строк, то это не значит, что его нет


не припомню в sqlcmd функции задания разделителя строк

Oleg_TLC
пример правильного и неправильного xml-файла приведите

а еще лучше и скрипт генерирующий сам xml файл
7 сен 15, 14:32    [18118798]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Glory
Member

Откуда:
Сообщений: 104751
felix_ff
не припомню в sqlcmd функции задания разделителя строк

Зато там есть

-w column_width
Specifies the screen width for output. This option sets the sqlcmd scripting variable SQLCMDCOLWIDTH. The column width must be a number greater than 8 and less than 65536. If the specified column width does not fall into that range, sqlcmd generates and error message. The default width is 80 characters. When an output line exceeds the specified column width, it wraps on to the next line.
7 сен 15, 15:15    [18119145]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Oleg_TLC,

а что в скрипте, не for xml EXPLICIT случайно, если да и там в скрипте нет заворачивания select`a в переменную, то это стандартное поведение для сиквела при выводе xml в клиента, строки по 2000 байт.
7 сен 15, 15:51    [18119460]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Glory
Member

Откуда:
Сообщений: 104751
WarAnt
то это стандартное поведение для сиквела при выводе xml в клиента, строки по 2000 байт.

Только вот сиквел не занимается никаким "выводом строк". Тем более не делит их на порции.
7 сен 15, 15:53    [18119471]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Oleg_TLC
Member

Откуда:
Сообщений: 5
WarAnt
Oleg_TLC,

а что в скрипте, не for xml EXPLICIT случайно, если да и там в скрипте нет заворачивания select`a в переменную, то это стандартное поведение для сиквела при выводе xml в клиента, строки по 2000 байт.


FOR XML PATH - нашел, EXPLICIT нет.

Вывести сюда к сожалению не могу скрипт и результат.
7 сен 15, 16:35    [18119845]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1836
Oleg_TLC
WarAnt
Oleg_TLC,

а что в скрипте, не for xml EXPLICIT случайно, если да и там в скрипте нет заворачивания select`a в переменную, то это стандартное поведение для сиквела при выводе xml в клиента, строки по 2000 байт.


FOR XML PATH - нашел, EXPLICIT нет.

Вывести сюда к сожалению не могу скрипт и результат.


Glory Вам уже ответил выставьте параметр -w 65535 но если xml файл получается жирнее перенос все равно будет
7 сен 15, 17:00    [18119964]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1836
хотя как то это не укладывается в 2033 символа :/

Ванговать что то сегодня желания нет, раз ТС не предоставляет более детальной картинки
7 сен 15, 17:02    [18119971]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Oleg_TLC
Member

Откуда:
Сообщений: 5
Всем спасибо большое.
Передал ваши советы программистам, пробуют.

Сам -w 65355 попробовал добавить в строку
EXEC Master..xp_CmdShell 'sqlcmd -S(local) -d name_bd -E -i C:\1.sql -o C:\1.xml -w 63555

без результата :(

или я не правильно понял куда ее добавить...
8 сен 15, 07:18    [18121296]     Ответить | Цитировать Сообщить модератору
 Re: Лишние переносы строки через 2033 символа  [new]
Glory
Member

Откуда:
Сообщений: 104751
Oleg_TLC
без результата :(

А вы в курсе, что там за команды у вас в C:\1.sql ?
8 сен 15, 08:05    [18121341]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить