août
2011
Importer un fichier XML dans une table
–=================================================================================================
–> Description : Importer un fichier XML dans une colonne xml d'une table
–> Exemple d'utilisation :
– EXEC P_ImportXMLFileToTable @NomSchema = 'dbo', @NomTable = N'XmlImportTest2',@XmlColonne = N'xml_data',@XmlFilenameWithDirectory=N'C:\temp\test.xml'
–> Auteur : Etienne ZINZINDOHOUE
–==================================================================================================
CREATE PROCEDURE [dbo].[P_ImportXMLFileToTable]
@NomSchema sysname,@NomTable sysname,@XmlColonne sysname, @XmlFilenameWithDirectory VARCHAR(1024)
AS
BEGIN TRY
SET NOCOUNT ON
DECLARE @SQL VARCHAR(max)
– Verifier la présence du fichier source XML
DECLARE @FileOK INT,@TableOK INT,@XmlColonneOK INT
EXEC xp_fileexist @XmlFilenameWithDirectory, @FileOK OUTPUT
IF(@FileOK = 0)
BEGIN
SELECT 'Le fichier ' + @XmlFilenameWithDirectory + ' n''existe pas !'
RETURN
END
– Vérifier la présence de la table de destination
SELECT @TableOK = COUNT(*)
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA +'.'+TABLE_NAME = @NomSchema +'.'+ @NomTable
IF(@TableOK = 0)
BEGIN
SELECT 'La table ' + @NomSchema + @NomTable + ' n''existe pas !'
RETURN
END
– Vérifier la présence de la colonne xml dans la table de destination
SELECT @XmlColonneOK = COUNT(*)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA +'.'+TABLE_NAME = @NomSchema +'.'+ @NomTable
AND COLUMN_NAME = @XmlColonne
AND DATA_TYPE = 'xml'
IF(@XmlColonneOK = 0)
BEGIN
SELECT 'La colonne ' + @XmlColonne + ' de type XML n''existe pas dans la table '+ @NomSchema + @NomTable + ' !'
RETURN
END
–Import du fichier XML dans la table
SET @SQL = 'INSERT INTO '+ @NomSchema +'.'+ @NomTable + '(' + @XmlColonne +' )
SELECT *
FROM OPENROWSET (BULK ''' + @XmlFilenameWithDirectory + ''',SINGLE_BLOB ) LoadXML'
EXEC (@SQL)
END TRY
BEGIN CATCH
SELECT 'Erreur dans la procdure [P_ImportXMLtoTable]'
END CATCH
——————————————-
Etienne ZINZINDOHOUE
——————————————-