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

Откуда: Israel
Сообщений: 4
Добрый день, нужна помощь в преобразовании XML в плоскую таблицу
Спасибо за помощь .

<link>http://www.test.ru</link>
<title>xxxxx</title>
<description>yyyyyy</description>
<pubDate>Mon, 24 Aug 2015 00:00:00 Z</pubDate>
<category domain="analystName">Christopher</category>
<category domain="firmName">KKK</category>
<category domain="stock">XXX</category>
<category domain="companyName">Company XXX</category>
</link>


SELECT link, title, [description], pubDate,analystName,stock,companyName
....
25 авг 15, 13:52    [18064603]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь преобразовать XML в плоскую таблицу  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1433
Yacov Naidorf,

у вас xml не валидный

а вообще что то типа такого?
declare @x xml 
set @x = '<link>http://www.test.ru</link>
<title>xxxxx</title>
<description>yyyyyy</description>
<pubDate>Mon, 24 Aug 2015 00:00:00 Z</pubDate>
<category domain="analystName">Christopher</category>
<category domain="firmName">KKK</category>
<category domain="stock">XXX</category>
<category domain="companyName">Company XXX</category>'
select @x

select @x.value('(/link/text())[1]', 'varchar(255)') as link,
       @x.value('(/description/text())[1]', 'varchar(255)') as description,
	   @x.value('(/pubDate/text())[1]', 'varchar(255)') as pubDate,
	   @x.value('(/category[@domain="analystName"]/text())[1]', 'varchar(255)') as analystName,
	   @x.value('(/category[@domain="firmName"]/text())[1]', 'varchar(255)') as firmName,
	   @x.value('(/category[@domain="stock"]/text())[1]', 'varchar(255)') as stock,
	   @x.value('(/category[@domain="companyName"]/text())[1]', 'varchar(255)') as companyName
25 авг 15, 14:31    [18064912]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь преобразовать XML в плоскую таблицу  [new]
invm
Member

Откуда: Москва
Сообщений: 9397
declare @x xml = N'<link>http://www.test.ru
<title>xxxxx</title>
<description>yyyyyy</description>
<pubDate>Mon, 24 Aug 2015 00:00:00 Z</pubDate>
<category domain="analystName">Christopher</category>
<category domain="firmName">KKK</category>
<category domain="stock">XXX</category>
<category domain="companyName">Company XXX</category>
</link>';

declare @h int;

exec sys.sp_xml_preparedocument @h output, @x;

select
 *
from
 openxml(@h, '/')
with
(
 link varchar(100) '/link/text()',
 description varchar(100) '/link/description/text()',
 pubDate varchar(100) '/link/pubDate/text()',
 analystName varchar(100) '/link/category[@domain = "analystName"]/text()',
 firmName varchar(100) '/link/category[@domain = "firmName"]/text()',
 stock varchar(100) '/link/category[@domain = "stock"]/text()',
 companyName varchar(100) '/link/category[@domain = "companyName"]/text()'
);

exec sys.sp_xml_removedocument @h;
25 авг 15, 14:38    [18064988]     Ответить | Цитировать Сообщить модератору
 Re: Нужна помощь преобразовать XML в плоскую таблицу  [new]
Yacov Naidorf
Member

Откуда: Israel
Сообщений: 4
Спасибо.
25 авг 15, 14:53    [18065127]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить