| Начало » Использование СУБД » Microsoft SQL Server » Скрипт sql в xml Переход к форуму:
	| 
		
			| Скрипт sql в xml [сообщение #2792] | Tue, 18 July 2023 14:29  |  
			| 
				
				
					|  prospector Сообщений: 5
 Зарегистрирован: July 2023
 | Junior Member |  |  |  
	| Результатом выполнения скрипта: 
 будет файл:if object_id('tempdb..#List', 'U') <> 0 drop table #List
create table #List(
	articul		nvarchar(50)
	,quantity	money
)
insert into #List select '00333', 5.0000
insert into #List select '00058', 1.0000
select
	1 as Tag
	,NULL as Parent
	,NULL as [items!1]
	,NULL as [item!2!articul]
	,NULL as [item!2!quantity]
union all
select
	2
	,1
	,NULL
	,articul
	,quantity
from #List 
for xml explicit, root('root')
 1. Подскажите пожалуйста как сделать файл вида:<root>
  <items>
    <item articul="00333" quantity="5.0000" />
    <item articul="00058" quantity="1.0000" />
  </items>
</root>
 2. Можно ли в корневой элемент <root> добавить атрибут?:<root>
  <items>
    <item> 
       <articul>00333</articul>
       <quantity>5.0000</quantity>
    </item> 
       <articul>00058</articul>
       <quantity>1.0000</quantity>
    </item> 
  </items>
</root>
 <root date="2023-07-18 00:00:00">
</root> |  
	|  |  |  
	|  |  
	|  |  
	| 
		
			| Re: Скрипт sql в xml [сообщение #2806 является ответом на сообщение #2794] | Sat, 22 July 2023 19:27   |  
			| 
				
				
					|  BlackEric Сообщений: 393
 Зарегистрирован: June 2022
 | Senior Member |  |  |  
	| Вот пример. Будет работать начиная с MS SQL 2014 SP2: KB3136780 - UTF-8 encoding support for the BCP utility and BULK INSERT Transact-SQL command in SQL Server 2014 SP2.use testdb
Go
declare
	@strSQL				nvarchar(1024)
	,@cmd				nvarchar(1024)
	,@OutputFileName nvarchar(256)
set @OutputFileName = 'c:\Shared\1.xml'
/*create table List(
	articul		nvarchar(50)
	,quantity	money
)
insert into List select '00333', 5.0000
insert into List select '00058', 1.0000*/
select @strSQL = ''
	+ 'select ''<?xml version=""1.0"" encoding=""utf-8""?>'' + ( '
	+ 'select CURRENT_TIMESTAMP [@date], ( '
	+ 'select ( '
		+ 'select * '
		+ 'from ( '
			+ 'select 	articul, quantity '
			+ 'from List'
		+ ') AS v(articul, quantity) '
		+ 'for xml path(''item''), TYPE '
	+ ') '
	+ 'for xml path(''items''), TYPE '
	+ ') '
	+ 'for xml path(''shop'') '
	+ ')'
select @cmd = 'bcp "'
	+ @strSQL
	+ '" '
    + 'queryout "' + @OutputFileName + '" -c -C 65001 -T ';
exec xp_cmdshell @cmd
 А использование xp_cmdshell не самый лучший вариант с точки зрения безопасности.
 [Обновления: Sat, 22 July 2023 19:35] Известить модератора |  
	|  |  |  
	|  | 
 
 
 Текущее время: Fri Oct 31 15:57:57 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.00678 секунд |