Importer du contenu XML dans une table SQL serveur 1

Importer du contenu XML dans une table SQL serveur

Depuis MS SQL 7, il est possible d’utiliser du XML en résultat de requêtes.  Le “AS XML” n’a sûrement plus de secret pour vous.

Par contre, qu’en est-il de l’importation de fichier au format XML ?  Voici un petit exemple qui vous permettra de démarrer. Faites le évoluer au gré de vos besoins.

 

Le fichier XML est construit comme suit et enregistré dans un fichier : « e:\temp\monfichier.xml »

<?xml version=”1.0″ encoding=”UTF-8″?><root><data><col1>Test1</col1><col2>1</col2><col3>01/05/2015</col3></data><data>

<col1>Test2</col1>

<col2>2</col2>

<col3>02/06/2015</col3>

</data>

</root>

 

Pour tester, j’ai créé “matable” dans la base de données “mabase” comme ceci :

USE [mabase]GO/****** Object: Table [dbo].[matable]   Script Date: 11/06/2015 09:30:56 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOSET ANSI_PADDING ON

GO

CREATE TABLE [dbo].[matable](

[macolonne1] [varchar](10) NULL,

[macolonne2] [int] NULL,

[macolonne3] [date] NULL

) ON [PRIMARY]

GO

SET ANSI_PADDING OFF

GO

 

Le query exécuté est celui-ci :

DECLARE @monDocument XMLSELECT @monDocument = BulkColumnFROM OPENROWSET(BULK ‘E:\temp\monfichier.xml’, SINGLE_CLOB) AS XINSERT INTO dbo.matable(macolonne1 ,macolonne2, macolonne3)

SELECT colonne.value(‘./col1[1]’, ‘varchar(10)’),

colonne.value(‘./col2[1]’, ‘int’),

colonne.value(‘./col3[1]’, ‘date’)

FROM @monDocument.nodes(‘/root/data’) TMP_XML (colonne)

Et voilà. A l’exécution du query, les informations sont bien ajoutées à la table.

Je vous laisse en faire une version ‘Update’, une procédure stockée, ….

 

A propos Martial Auroy

Je suis formateur sur les offres de la plateforme Microsoft 365 et sur la suite Office de Microsoft : Excel, OneDrive, Planner, PowerPoint, SharePoint, Teams, Word, Yammer et tous leurs amis.

Je vous propose également...

Microsoft SQL 2014 est sorti ! 2

Microsoft SQL 2014 est sorti !

Microsoft sort sa dernière version de SQL Server, alors quoi de neuf au niveau des améliorations et la gestion des licences.

Query pour rechercher dans toutes les tables d'une base de données 3

Query pour rechercher dans toutes les tables d’une base de données

Cette procédure stockée permet de faire une recherche de chaine dans toutes les colonnes de toutes les tables d'une base de données....