Utilisation du script sqlcmd suivant:
sqlcmd -S . -d MyDb -E -s, -W -Q "select account,rptmonth, thename from theTable"
> c:\dataExport.csv
J'obtiens un fichier de sortie csv contenant
acctnum, rptmonth, facilname
-------, --------, ---------
ALLE04,201406, Allendale Community for Senior Living-LTC APPL02,201406, Applewood Estates ARBO02,201406, Arbors Care Centre
ARIS01,201406, AristaCare à Cherry Hill
. . .(139 lignes affectées)
Existe-t-il un moyen de supprimer la ligne pointillée sous les en-têtes de colonne: -------, --------, mais conservez les en-têtes de colonne?
et aussi un moyen de se débarrasser des deux lignes utilisées pour le nombre de lignes en bas?
J'essaie d'utiliser parm -h-1 mais cela s'est débarrassé des en-têtes de colonne ainsi que de la ligne pointillée.
Solutions:
1) Pour supprimer le nombre de lignes ("(139 lignes affectées)"), vous devez utiliser SET NOCOUNT ON
déclaration. Voir ref .
2) Pour supprimer les en-têtes de colonne, vous devez utiliser -h
paramètre avec valeur -1
. Voir réf (section Options de formatage) .
Exemples:
C:\Users\sqlservr.exe>sqlcmd -S(local)\SQL2012 -d Test -E -h -1 -s, -W -Q "set nocount on; select * from dbo.Account" > d:\export.txt.
ou
C:\Users\sqlservr.exe>sqlcmd -S(local)\SQL2012 -d Test -E -h -1 -s, -W -Q "set nocount on; select * from dbo.Account" -o "d:\export2.txt"
Le gars avec la première réponse n'a pas répondu comment supprimer la ligne pointillée. Ceci est ma solution géniale.
Désolé, j'ai 4 ans et 9 mois de retard.
Utilisez le suivant;
sqlcmd -S . -d MyDb -E -s, -h-1 -W -Q "set nocount on;select 'account','rptmonth', 'thename';select account,rptmonth, thename from theTable"
> c:\dataExport.csv
Dans mon cas, a bien fonctionné comme:
type Temp.txt | findstr/v -> DestFile.txt
Pour supprimer le nombre de lignes: ajoutez ce qui suit à votre instruction SQL
SET NOCOUNT ON;
Pour supprimer la ligne de tiret, essayez ce qui suit en cas d'exécution réussie:
findstr /v /c:"---" c:\dataExport.csv > c:\finalExport.csv
J'utilise "---" car toutes mes colonnes comportent plus de 3 caractères et je n'ai jamais cette chaîne dans mes données, mais vous pouvez également utiliser "-, -" pour réduire davantage le risque ou tout délimiteur basé sur vos données à la place du ",".
De plus, si vous souhaitez interroger tous les enregistrements d'une table, vous pouvez coder comme
Attribuez les requêtes ci-dessus à une variable% query%. La commande ressemblera à celle ci-dessous.
SQLCMD -h -1 -W -E -S %sql_server% -d %sql_dabase% -Q %query% -s"," -o output_file.csv
1.Créez d'abord le fichier avec les colonnes d'en-tête
2.Ajoutez la sortie sqlcmd au fichier à l'aide de l'option -h-1
echo acctnum, rptmonth, facilname> c:\dataExport.csv sqlcmd -S. -d MyDb -E -s, -h-1 -W -Q "sélectionner le compte, rptmonth, puis le nom du tableau" >> c:\dataExport.csv