Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 экспорт в xml  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 307
Всем добрый день! Подскажите, плиз, как сделать чтобы при запуске 'BCP "SELECT * FROM test FOR XML AUTO, ELEMENTS " queryout ' + @OutputFileName + '-T -S BASE -w' в результате получался файлик такого вида

<SAIT_BUH>
<fio_f>...</fio_f>
<fio_i>...</fio_i>
<fio_o>...</fio_o>
</SAIT_BUH>

где каждое поле запроса с новой строки, а не в одну строку как получается при запуске приведенного кода?

<SAIT_BUH><fio_f>...</fio_f><fio_i>...</fio_i><fio_o>...</fio_o></SAIT_BUH>
26 май 11, 15:06    [10713547]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
а точно надо ??? Вообще как бы форматирование отображения содержимого файла - вовсе не задача утилиты експорта данных
26 май 11, 15:14    [10713617]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

Откуда:
Сообщений: 104751
ElenaLeont
где каждое поле запроса с новой строки, а не в одну строку как получается при запуске приведенного кода?

Открывайте полученный файл в IE или другой утилите, которая отображает xml-и нормально и без долполнительных символов, которые не несут никакой смысловой нагрузки
26 май 11, 15:22    [10713702]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 307
файлик из результата запроса for xml у меня вообще не открывается ie
26 май 11, 15:30    [10713798]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

Откуда:
Сообщений: 104751
ElenaLeont
файлик из результата запроса for xml у меня вообще не открывается ie

С ошибкой о невалидности xml-я ?
26 май 11, 15:31    [10713809]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 307
да , причем если в селекте только одна запись, то все ок, ie открывает его, а если больше одной записи то ошибка в ie

В документах XML допускается только один элемент верхнего уровня. Ошибка при обработке ресурса ''file://10.0.7.4/ForFTP$/us...

<SAIT_BUH><fio_f>Кирьянов</fio_f><fio_i>Евгений</fio_i><fio_o>Владимирович</fio_o>...
26 май 11, 15:40    [10713915]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
iljy
Member

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

так добавьте в выражение FOR XML элемент ROOT
26 май 11, 15:40    [10713923]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

Откуда:
Сообщений: 104751
ElenaLeont
да , причем если в селекте только одна запись, то все ок, ie открывает его, а если больше одной записи то ошибка в ie

Наверное потому, что нет <root> тэга
26 май 11, 15:41    [10713936]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 307
и с root пробовала, вот результат с root при увеличении количества записей в селекте

Не удается отобразить страницу XML
Не удается просмотреть ввод XML с использованием списка стилей XSL. Исправьте ошибку и затем нажмите кнопку "Обновить"или повторите попытку позднее.


--------------------------------------------------------------------------------

Имя содержит ошибочный знак. Ошибка при обработке ресурса ''file://10.0.7.4/ForFTP$/users.xml''. Строка 3,Положение 5

io_i>Владимир</fio_i><fio_o>Сергеевич</fio_o><num_card>19</num_card><dolgnost>Бухгалт...
indent:-2em"> <ruk>0</ruk>
<OneC>0</OneC>
</SAIT_BUH>
26 май 11, 15:46    [10714005]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

Откуда:
Сообщений: 104751
ElenaLeont
и

io_i>Владимир</fio_i><fio_o>Сергеевич</fio_o><num_card>19</num_card><dolgnost>Бухгалт...
indent:-2em"> <ruk>0</ruk>
<OneC>0</OneC>
</SAIT_BUH>

Кто-то в середину тэга впихнул символы перевода каретки и возврата строки ?
26 май 11, 15:49    [10714033]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
ElenaLeont
Member

Откуда: Екатеринбург
Сообщений: 307
в смысле искать данные символы в данных?
30 май 11, 07:05    [10729153]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

Откуда:
Сообщений: 104751
ElenaLeont
в смысле искать данные символы в данных?

Нет, смотреть, какой длины у вас строки получаются в файле полученном с помощью bcp
30 май 11, 10:26    [10729667]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
WarAnt
Member

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

For xml вам не пойдет, он выплевывает данные пакетами по 2000 символов, а bcp подсовывает им в конце перевод каретки, так что без пост обработки вы такие файлы как xml не откроете
30 май 11, 10:37    [10729741]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

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

For xml вам не пойдет, он выплевывает данные пакетами по 2000 символов, а bcp подсовывает им в конце перевод каретки, так что без пост обработки вы такие файлы как xml не откроете

перевод каретки зависит от длины строки, который задается bcp
30 май 11, 10:39    [10729753]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
WarAnt
Member

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

For xml вам не пойдет, он выплевывает данные пакетами по 2000 символов, а bcp подсовывает им в конце перевод каретки, так что без пост обработки вы такие файлы как xml не откроете

перевод каретки зависит от длины строки, который задается bcp


в случае for xml всегда выдается 2000 символов как отдельные пакеты которые клиентом потом склеиваются, а уж как склеиваются это вопрос второй, чаще всего с помощью перевода каретки и bcp тут не исключение и это никак не зависит от установленного размера длины строки.
30 май 11, 11:55    [10730520]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

Откуда:
Сообщений: 104751
WarAnt
Glory
пропущено...

перевод каретки зависит от длины строки, который задается bcp


в случае for xml всегда выдается 2000 символов как отдельные пакеты которые клиентом потом склеиваются, а уж как склеиваются это вопрос второй, чаще всего с помощью перевода каретки и bcp тут не исключение и это никак не зависит от установленного размера длины строки.

1. Не всегда
2. И что мешает установить пустой разделитель строк ?
30 май 11, 11:59    [10730562]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Glory
WarAnt
пропущено...


в случае for xml всегда выдается 2000 символов как отдельные пакеты которые клиентом потом склеиваются, а уж как склеиваются это вопрос второй, чаще всего с помощью перевода каретки и bcp тут не исключение и это никак не зависит от установленного размера длины строки.

1. Не всегда
2. И что мешает установить пустой разделитель строк ?


Мешает функциональность bcp насколько мне известно не удается подобрать рабочий набор параметров например
30 май 11, 12:43    [10730904]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

Откуда:
Сообщений: 104751
WarAnt
Glory
пропущено...

1. Не всегда
2. И что мешает установить пустой разделитель строк ?


Мешает функциональность bcp насколько мне известно не удается подобрать рабочий набор параметров например

А -r что по вашему задает ?
30 май 11, 12:44    [10730913]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
WarAnt
For xml вам не пойдет, он выплевывает данные пакетами по 2000 символов
Нифига, это если в текстовом виде.

В конце пишите Type. Всегда!
30 май 11, 13:21    [10731261]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
WarAnt
Member

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

-r задает то что нужно но он не работает так как надо то есть если просто задать -r то на выходе вы получите:

Error = [Microsoft][ODBC SQL Server Driver][SQL Server]Warning: Server data (3046 bytes) exceeds host-file field length (0 bytes) for field (1). Use prefix length, termination string, or a larger host-file field size. Truncation cannot occur for BCP out

а если добавить то что это исправляет, например -w -C -C1251 то да, файл сформируется и даже без разделителя НО он будет unicode и как xml не откроется, о чем я вам и пытаюсь рассказать, либо с разделителем либо не в той кодировке, но в любом случае нужна пост обработка файла чтобы он стал валидным xml.
30 май 11, 13:28    [10731323]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

Откуда:
Сообщений: 104751
WarAnt
НО он будет unicode и как xml не откроется, о чем я вам и пытаюсь рассказать, либо с разделителем либо не в той кодировке, но в любом случае нужна пост обработка файла чтобы он стал валидным xml.

С чего это "он не откроется" ?
30 май 11, 13:30    [10731334]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
WarAnt
Member

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

Да Вы правы если шапку не дописывать то открывается.
Посыпаю голову пеплом.
30 май 11, 13:35    [10731390]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
WarAnt
-w -C -C1251
Зачем?
Кроме параметра "-w" ваще ничего не надо (ну параметры соединения и лога), как у ТС.
30 май 11, 15:45    [10732705]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Brokenfor
Member

Откуда:
Сообщений: 10
Здравствуйте. Имеется задача выгрузить данные в XML

делаю следующие процедуры.

alter PROCEDURE dbo.get_xml
as
SET NOCOUNT ON

select [запрос]  or xml auto, type, Root('Студенты')

Процедура которая выгрузит все данные в формат XML

и затем пишу вторую процедуру, которая вызовет эту

DECLARE @result int
DECLARE @OutputFileName varchar(150)
DECLARE @cmd varchar( 150)

Set @OutputFileName = 'c:\mysql.xml'

Set @cmd = 'BCP "EXEC get_xml" queryout "' + @OutputFileName + '" -w -C1251 -c -r -T'

EXEC @result = master..xp_cmdshell @cmd


пытаюсь её вызвать, пишет ошибку

Msg 15281, Level 16, State 1, Procedure xp_cmdshell, Line 1
SQL Server blocked access to procedure 'sys.xp_cmdshell' of component 'xp_cmdshell' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'xp_cmdshell' by using sp_configure. For more information about enabling 'xp_cmdshell', see "Surface Area Configuration" in SQL Server Books Online.



в чем может быть ошибка, подскажите пожалуйста :(
29 май 12, 18:29    [12633679]     Ответить | Цитировать Сообщить модератору
 Re: экспорт в xml  [new]
Glory
Member

Откуда:
Сообщений: 104751
Brokenfor
в чем может быть ошибка, подскажите пожалуйста

Перечитайте серверное сообщение об ошибке
29 май 12, 18:36    [12633716]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить