Bonjour,

Je rencontre un problème avec la mise en forme d'un fichier XML généré à partir d'une requête "FOR XML EXPLICIT" et copié dans un fichier via BCP.

Les données sont correctes mais il y a régulièrement des retour chariot qui coupent les lignes. Et donc le fichier XML est faux si la coupure a lieu en plein milieu d'une balise par exemple.

Je suppose que çà doit venir des lignes qui sont trop longues... Déjà, dans le fichier obtenu, toutes les données sont sur "une ligne", le fichier n'est pas indenté, mais çà, c'est pas vraiment gênant. Est-ce qu'il y a une taille maximale pour une ligne dans un fichier? (ce qui pourrait expliquer les retours à la ligne)

Si j'indente le fichier pour que ce soit plus lisible, voilà ce que çà donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
<BALISE>
	<ATTRIBUT1>....</ATTRIBUT1>
	<ATTRIBUT2>....</ATTRIBUT2>
	<ATTRIBUT3>....</ATTRIBUT3>
</BALISE>
<BALISE>
	<ATTRIBUT1>....</ATTRIBUT1>
	<ATT
RIBUT2>....</ATTRIBUT2>
	<ATTRIBUT3>....</ATTRIBUT3>
</BALISE>
Forcement, le fichier n'est donc pas exploitable puisque j'ai le nom d'une balise "coupée" sur deux lignes.

La table ExportXML contient plus de 4.000 lignes et une vingtaine de colonne. Le fichier xml généré fait 3Mo. La requête utilisée pour formater les données au format XML :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SET @sSQL = 'SELECT * FROM ExportXML FOR XML EXPLICIT'
La commande utilisée pour stocker le résultat dans un fichier via BCP :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
SET @CmdExec = 'BCP "' + @sSQL + '" queryout"'+ @repDestination + @ficNom  + '" -S ' + @ServerBDD + '-U sa -P ' + @PWD + '  -t"|" -c'
EXEC @Status = master..xp_cmdshell @CmdExec, NO_OUTPUT
D'où peut provenir le problème? de XML EXPLICIT? de BCP? Y'a des options à spécifier peut-être pour résoudre le problème?

PS : si je mets qu'une vingtaines de lignes par exemple dans la table ExportXML, il y a pas de soucis.