2009-11-27 5 views
1

J'ai besoin de vider mon résultat de requête sql dans le fichier texte. J'ai créé la requête suivante,Enregistrer Sql Recordset dans le fichier csv avec bien formaté?

DECLARE @cmd VARCHAR(2048) 

SET @cmd = 'OSQL -Slocalhost ' 
      + ' -UCRN370 -PCRN370' 
      + ' -Q"SELECT TOP 5 GageId FROM EwQMS370..msgages"' 
      + ' -oc:\authors.csv' 

EXEC master..xp_cmdshell @cmd, NO_OUTPUT 

La requête ci-dessus a créé le fichier CSV authors.CSV. Mais le contenu du fichier n'est pas formaté correctement. Ils ont montré des données indésirables.

J'ai besoin de créer un fichier csv formaté.

+2

À quoi ressemble la sortie? qu'est-ce que la camelote? ce qui est bon"? – gbn

+0

exactement - dites-nous ** ce que ** vous avez, et ** ce que ** vous attendez plutôt - nous avons besoin de voir ce delta afin de pouvoir aider ... –

+0

Il a retourné beaucoup de petites boîtes et des lignes entre réelle Les données. Les enregistrements ne sont pas non plus affichés ligne par ligne [c'est-à-dire que la première colonne est en première ligne et la suivante est quelques lignes après en fichier csv. –

Répondre

0

Vous pouvez le faire avec BCP, CLR, SSIS ou DTS, selon votre exemple. BCP est probablement le meilleur ajustement. Vous pouvez toujours exécuter ceci via xp_cmdshell de la même manière que dans votre exemple; seul BCP effectuera la lourde levée du formatage CSV pour vous. Booksonline passera par BCP plus en détail. Si vous devez sélectionner moins de colonnes dans votre tableau, créez une vue pour restreindre les données.

+0

Merci. Ça a bien marché. Comment puis-je définir la première ligne comme nom de colonne [en-tête]? –

+0

Cela aidera probablement http://weblogs.sqlteam.com/brettk/archive/2005/04/13/4395.aspx – u07ch

Questions connexes