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

Откуда: Где где .. в караганде
Сообщений: 538
Добрый день!

Подскажите, как правильно сделать выборку из XML документа и посадить данные в таблицу.

Необходимо посадить разпарсенные данные полей раздела section name='По протоколам'
Содержание XML файла:

<?xml version="1.0" encoding="windows-1251"?>
<report>
	<details>
		<item name="Начало">10/1/2014</item>
		<item name="Конец">11/1/2014</item>
	</details>
	<header>
		<column colwidth="288">Распределение трафика</column>
		<column colwidth="70">Входящий трафик</column>
		<column colwidth="70">Исходящий трафик</column>
		<column colwidth="70">Суммарный трафик</column>
		<column colwidth="70">Запросы</column>
		<column percentage="1" colwidth="70">Процент</column>
	</header>
	<section name="По пользователям">
		<item id="1">
			<column>USER1</column>
			<column>4522359997</column>
			<column>149027773</column>
			<column>4671387770</column>
			<column>108266</column>
			<column>100%</column>
		</item>
		<summary>
			<column>ВСЕГО</column>
			<column>4522359997</column>
			<column>149027773</column>
			<column>4671387770</column>
			<column>108266</column>
			<column>100%</column>
		</summary>
	</section>
	<section name="По протоколам">
		<item id="1">
			<column>HTTP</column>
			<column>3595416221</column>
			<column>73963171</column>
			<column>3669379392</column>
			<column>90046</column>
			<column>78.6%</column>
		</item>
		<item id="2">
			<column>SSL</column>
			<column>926943776</column>
			<column>75064602</column>
			<column>1002008378</column>
			<column>18220</column>
			<column>21.4%</column>
		</item>
		<summary>
			<column>ВСЕГО</column>
			<column>4522359997</column>
			<column>149027773</column>
			<column>4671387770</column>
			<column>108266</column>
			<column>100%</column>
		</summary>
	</section>
	<section name="По датам">
		<item id="1">
			<column>10/23/2014</column>
			<column>1156591298</column>
			<column>9482583</column>
			<column>1166073881</column>
			<column>9055</column>
			<column>25.0%</column>
		</item>
		<item id="2">
			<column>10/17/2014</column>
			<column>597920289</column>
			<column>10434367</column>
			<column>608354656</column>
			<column>10266</column>
			<column>13.0%</column>
		</item>
        </selection>
	<section name="По хостам">
		<item id="1">
			<column url="1">no-reverse-yet.3winfra.com</column>
			<column>736092762</column>
			<column>414954</column>
			<column>736507716</column>
			<column>912</column>
			<column>15.8%</column>
		</item>
		<item id="2">
			<column url="1">t018.topaz.myloc.de</column>
			<column>596059920</column>
			<column>602400</column>
			<column>596662320</column>
			<column>1312</column>
			<column>12.8%</column>
		</item>
 </selection>
</report>
26 ноя 14, 13:38    [16907710]     Ответить | Цитировать Сообщить модератору
 Re: Как правильно сделать выборку из XML документа?  [new]
PA
Member

Откуда: Санкт-Петербург
Сообщений: 4146
mr.dfox,
select 
	t.c.value('(@id)[1]', 'int') [id],
	t.c.value('(column)[1]', 'varchar(25)') [Распределение трафика], 
	t.c.value('(column)[2]', 'bigint') [Входящий трафик],
	t.c.value('(column)[3]', 'bigint') [Исходящий трафик],
	t.c.value('(column)[4]', 'bigint') [Суммарный трафик],
	t.c.value('(column)[5]', 'bigint') [Запросы],
	t.c.value('(column)[6]', 'varchar(25)') [Процент]
from 
	@x.nodes('/report/section[@name=''По протоколам'']/*') t(c)
26 ноя 14, 14:13    [16907993]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить