Dalla versione 2005 di SQL Server, ci sono state importanti novità, fra le quali:
- - Miglioramento delle funzioni FOR XML e OPENXML
- - Caricamento di di notevoli quantità di dati XML
- - Supporto al tipo di dati XML
- - Possibilità di eseguire una XQuery su un XML
Di seguito viene riportato un esempio in cui da una query si vuole caricare un file XML da gestire in un secondo momento.
Partendo da un file XML con la seguente struttura:
Si procederà all'importazione del file
if object_id('LI_tmp_State_xml') is null create table LI_tmp_State_xml (Id int identity primary key, XmlDoc xml, loaded_date datetime default getdate()); go truncate table LI_tmp_State_xml; go insert into LI_tmp_State_xml(XmlDoc) select convert(xml, BulkColumn) as BulkColumn from openrowset(bulk 'D:\File.xml', single_blob) as XmlDoc; |
Lo script sopra (da eseguirsi in una query), importa il file XML in un campo della tabella LI_tmp_State_xml appena creata.
Di seguito i dati importati, vengono interpretati dalla script sottostante:
declare @xmlDoc as xml, @hDoc as int, @sql nvarchar(max); select @xmlDoc = XmlDoc from LI_tmp_State_xml; exec sp_xml_preparedocument @hDoc output, @xmlDoc; SELECT * FROM LI_tmp_State_xml select * from openxml(@hDoc, 'Auxdata/Elements/Element') with ( Code varchar(5) '(Field[@name = "Code"])', Country varchar(50) '(Field[@name = "Country"])', IntraEU varchar(50) '(Field[@name = "IntraEU"])', CountryCode varchar(50) '(Field[@name = "CountryCode"])' ) exec sp_xml_removedocument @hDoc; |
Prestare molta attenzione ai colori di questo script con quelli presenti nell'XML.