Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment créer un fichier texte en utilisant un script sql avec du texte |

Le caractère pipe a une signification particulière dans les commandes batch, il doit donc être échappé en utilisant le caractère caret. Cela devrait fonctionner :

DECLARE @Text AS VARCHAR(100)
DECLARE @Cmd AS VARCHAR(100)
SET @Text = 'Hello world^| '
SET @Cmd ='echo ' +  @Text + ' > C:\AppTextFile.txt'
EXECUTE Master.dbo.xp_CmdShell  @Cmd

Bien que ce ne soit vraiment pas un bon moyen d'écrire des données dans un fichier texte :généralement, SQL Server ne devrait pas avoir l'autorisation d'écrire à la racine du lecteur C:, et xp_cmdshell est désactivé par défaut. Je vous suggère de regarder des alternatives comme sqlcmd.exe , bcp.exe ou un petit script dans votre langage préféré (PowerShell, Perl, Python, peu importe).

Il est généralement beaucoup plus facile, plus sûr et plus flexible d'interroger les données de SQL Server que de les pousser du côté serveur. Dans votre cas spécifique, il semble que vous souhaitiez écrire un fichier délimité et bcp.exe est destiné à cette fin .