Bonjour,
La commande suivante marche parfaitement en ligne de commande :
Elle n'a d'autre intérêt que d'essayer d'expliquer mon pb.
Code : Sélectionner tout - Visualiser dans une fenêtre à part BCP "SELECT * FROM EXERCICES" queryout D:\Donnees\Doc_communs\WaveSoft\Bodin\FILENAME.csv -t; -S FDSSERVER\WAVESOFT -d BODIN -c -T
La Cde SQL suivante fonctionne elle aussi parfaitement :
Le but est d'exporter le résultat d'une requête dans un fichier texte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DECLARE @SQL NVARCHAR(4000) SET @SQL = 'BCP "SELECT * FROM EXERCICES" queryout D:\Donnees\Doc_communs\WaveSoft\Bodin\FILENAME.csv -t; -S FDSSERVER\WAVESOFT -d BODIN -c -T' EXEC MASTER..XP_CMDSHELL @SQL
Evidemment en production réelle la requête sera plus "évoluée"
Par exemple quand je veux introduire des données fixes à exporter cela ne marche plus
Comme :
En ligne de commande : OK
Code : Sélectionner tout - Visualiser dans une fenêtre à part BCP "SELECT '00001' FROM EXERCICES" queryout D:\Donnees\Doc_communs\WaveSoft\Bodin\FILENAME.csv -t; -S FDSSERVER\WAVESOFT -d BODIN -c -T
Mais dans une requête SQL :
Message erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DECLARE @SQL NVARCHAR(4000) SET @SQL = 'BCP "SELECT '00001' FROM EXERCICES" queryout D:\Donnees\Doc_communs\WaveSoft\Bodin\FILENAME.csv -t; -S FDSSERVER\WAVESOFT -d BODIN -c -T' EXEC MASTER..XP_CMDSHELL @SQL
Msg 102, Level 15, State 1, Line 4
Incorrect syntax near '00001'.
Les cotes sont interprétées comme la fin de la variable et non comme faisant partie de son contenu
Donc les questions sont :
- comment faire passer ces valeurs fixes en paramètre de BCP
- comment faire passer également des variables, par exemple pour créer le nom de fichier en dynamique en fonction de la date.
Christophe
Partager