Bonjour,
Je voudrais extraire des données depuis SQL Server et les enregistrer en fichier XML.
Tout fonctionne très bien, hormis que le contenu xml récupéré est "utf-8" au lieu de "ISO-8859-15", donc je perd tous les accents.
Voici mes requêtes :
Fonction retournant le contenudu XML :Procédure enregistrant dans un fichier XML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 CREATE FUNCTION [xml_genFile]() RETURNS TABLE AS RETURN ( SELECT '<?xml version="1.0" encoding="ISO-8859-15" ?> <Societes><Societe Num="0" Nom="Siège">' as 'Noeud' UNION ALL SELECT( select Technicien.[Num] as Num,Technicien.[Nom] as Nom,dbo.xml_getDetails (Technicien.[Num]) as Certifs from DB1.dbo.Tech Technicien for xml auto ) UNION ALL SELECT('</Societe>') UNION ALL SELECT( select Societe.[Num],Societe.[Nom],'Non-généré' as [Commentaire],Technicien.[Num] as Num,Technicien.[Nom] as Nom,dbo.xml_getDetails (Technicien.[Num]) as Certifs from DB2.dbo.SOCIETE Societe,DB2.dbo.ST Technicien where Societe.Num=Technicien.NumSociete group by Societe.[Num],Societe.[Nom] ,Technicien.[Num],Technicien.[Nom] for xml auto ) UNION ALL SELECT('</Societes>') )La requête ci-dessous génère bien le fichier XML, mais en utf-8 :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 CREATE PROCEDURE [xml_genFileServer] AS BEGIN DECLARE @sql varchar(1000) DECLARE @chemSaveXml varchar(200) DECLARE @cmd varchar(200) select @chemSaveXml='\\Chemin\fichier.xml' select @sql = 'bcp "select * from dbo.xml_genFile()" queryout "'+cast(@chemSaveXml as varchar(200))+'" -c -U"myUser" -P"myPwd" -S "myServer"' exec master..xp_cmdshell @sql END
Cependant, si j'exécute la requête ci-dessous dans SQL Server, la fenêtre de résultats prend bien en compte les accents :
Code : Sélectionner tout - Visualiser dans une fenêtre à part exec dbo.xml_genFileServer
Une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part select * from dbo.xml_genFile()
Partager