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

Откуда: Київ
Сообщений: 293
Сохраняя результат запроса в xml файл с помощью bcp, я получаю файл состоящий из одной строки (что видно при открытии его блокнотом).
Возможно ли сделать так, чтоб файл выгружался с символами окончания строки после соответствующих элементов xml ?
Картинка с другого сайта.
Картинка с другого сайта.
10 сен 11, 17:57    [11258622]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
darthVLAD
Member

Откуда: Київ
Сообщений: 293
то, что выгружается сейчас.

К сообщению приложен файл. Размер - 35Kb
10 сен 11, 17:58    [11258624]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
darthVLAD
Member

Откуда: Київ
Сообщений: 293
хотелось бы получить...

К сообщению приложен файл. Размер - 40Kb
10 сен 11, 17:58    [11258626]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
darthVLAD
Сохраняя результат запроса в xml файл с помощью bcp, я получаю файл состоящий из одной строки (что видно при открытии его блокнотом).
Возможно ли сделать так, чтоб файл выгружался с символами окончания строки после соответствующих элементов xml ?
Нет.
10 сен 11, 21:31    [11259171]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
darthVLAD
Возможно ли сделать так, чтоб файл выгружался с символами окончания строки после соответствующих элементов xml ?
Может хоть вы ответите на вопрос "зачем"?
12 сен 11, 10:25    [11262408]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
darthVLAD
Member

Откуда: Київ
Сообщений: 293
Mnior
darthVLAD
Возможно ли сделать так, чтоб файл выгружался с символами окончания строки после соответствующих элементов xml ?
Может хоть вы ответите на вопрос "зачем"?


1) В основном из чисто академического интереса.
2) Но так же хочется проверить корректность вывода информации путем сравнения с файлом, выгружаемым с помощью самописной программы. Поскольку в большинстве программ сравнение идёт построчно, возникает небольшая неувязочка...
12 сен 11, 11:54    [11262914]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
darthVLAD,

Возможно, не все возможности bcp используйте


Выполняет операцию, используя символьный тип данных. При использовании этого параметра не запрашивается тип данных каждого поля. Для хранения данных используется тип char, префиксы отсутствуют, в качестве разделителя полей используется символ табуляции \t, а в качестве признака конца строки — символ новой строки \r\n.

http://msdn.microsoft.com/ru-ru/library/ms162802%28SQL.90%29.aspx

Приведите Ваш код команды bcp.
12 сен 11, 12:29    [11263207]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
darthVLAD
Member

Откуда: Київ
Сообщений: 293
Set @cmd = 'BCP "EXEC logistic.dbo.LP_XML_EXPORT_VerifyStockUnil" queryout '+ @tmpFileName + ' -w -C1252 -r -T'
12 сен 11, 12:45    [11263302]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
darthVLAD, во всех современых студиях есть кнопчка "Reformat XML".
+
А ещё можно пару строк на XSLT написать
... <xsl:output indent="yes" ... 
12 сен 11, 12:51    [11263357]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
darthVLAD,

11252147
12 сен 11, 12:57    [11263394]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
darthVLAD
Member

Откуда: Київ
Сообщений: 293
trew
darthVLAD,
11252147


тогда получится что-то вроде этого

К сообщению приложен файл. Размер - 62Kb
12 сен 11, 17:56    [11265662]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
darthVLAD, вы не обращайте на trew. Чукча не читатель.

Получается один цельный неделимый объект XML типа. BCP не имеет параметров экспортирования структурного xml в текстовую форму.
Скажите спасибо что хоть он его поддерживает для вывода.

Это не говоря о том, что это два совершенно разных XML.
12 сен 11, 21:04    [11266284]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
darthVLAD,

Можно сделать так
CREATE TABLE [dbo].[ddf](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[dd] [nvarchar](max) COLLATE Cyrillic_General_CI_AS NULL,
 CONSTRAINT [PK_ddf] PRIMARY KEY CLUSTERED 
(
	[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]

GO
-- TRUNCATE TABLE ddf

INSERT INTO ddf(dd)	
SELECT convert(VARCHAR(4000),(select date1, oper, qty 
from test.dbo.af for xml path('customUI'), TYPE))
	
UPDATE ddf
SET  dd =replace(dd,'</date1>','</date1>'+CHAR(13)+CHAR(10))

UPDATE ddf
SET dd =replace(dd,'</oper>','</oper>'+CHAR(13)+CHAR(10))

UPDATE ddf
SET dd =replace(dd,'</qty>','</qty>'+CHAR(13)+CHAR(10))

GO

declare 
@cmd varchar(4000),
@result as int

set @cmd='bcp "select dd from test.dbo.ddf" queryout c:\ttest.txt -t -C RAW -c -T'
set nocount off --подавляем вывод результирующих строк
EXEC @result= master..xp_cmdshell @cmd,no_output
if @result=0 print 'OK'

Кто знает как сделать это красиво, предложите свой вариант.
13 сен 11, 15:56    [11270340]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
trew
Member

Откуда: Москва
Сообщений: 2646
пропустил еще один UPDATE
UPDATE ddf
SET dd =replace(dd,'customUI>','customUI>'+CHAR(13)+CHAR(10))
13 сен 11, 16:13    [11270490]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
trew
Кто знает как сделать это красиво, предложите свой вариант.
Всё очень просто, никаких вариантов вааще не нужно. Для ручного единоразоваго построчного визуального сравнения, сойдёт единоразово нажать кнопочку в SSMS.
И никаких BCP не нужно:

1. Запустил процедуру (EXEC dbo.sp...)
2. Кликул на выданный xml
3. В новом окне с xml нажал кнопочку "Format Selection"
4. Нажал Ctrl+S и сохранил в файл
5. ...
6. Profit!

SET Зануда_Мод OFF
13 сен 11, 16:24    [11270591]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Mnior
3. В новом окне с xml нажал кнопочку "Format Selection"
О я гоню, это делается автоматом.
13 сен 11, 16:26    [11270626]     Ответить | Цитировать Сообщить модератору
 Re: Экспорт в XML. Формат содержимого.  [new]
darthVLAD
Member

Откуда: Київ
Сообщений: 293
Mnior,
Я уже проводил данную операцию.
Но теплилась надежда, что и bcp как-то может форматировать вывод :)

Но как говорится "На нет и суда нет"!
13 сен 11, 16:49    [11270827]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить