Начало » Использование СУБД » 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')
будет файл:
<root>
<items>
<item articul="00333" quantity="5.0000" />
<item articul="00058" quantity="1.0000" />
</items>
</root>
1. Подскажите пожалуйста как сделать файл вида:
<root>
<items>
<item>
<articul>00333</articul>
<quantity>5.0000</quantity>
</item>
<articul>00058</articul>
<quantity>1.0000</quantity>
</item>
</items>
</root>
2. Можно ли в корневой элемент <root> добавить атрибут?:
<root date="2023-07-18 00:00:00">
</root>
|
|
|
|
|
Re: Скрипт sql в xml [сообщение #2806 является ответом на сообщение #2794] |
Sat, 22 July 2023 19:27 |
BlackEric
Сообщений: 358 Зарегистрирован: June 2022
|
Senior Member |
|
|
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
Вот пример. Будет работать начиная с MS SQL 2014 SP2: KB3136780 - UTF-8 encoding support for the BCP utility and BULK INSERT Transact-SQL command in SQL Server 2014 SP2.
А использование xp_cmdshell не самый лучший вариант с точки зрения безопасности.
[Обновления: Sat, 22 July 2023 19:35] Известить модератора
|
|
|
|
Переход к форуму:
Текущее время: Fri Nov 15 12:23:47 GMT+3 2024
Общее время, затраченное на создание страницы: 0.01234 секунд
|