Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

So erstellen Sie eine Textdatei mit einem SQL-Skript mit Text |

Das Pipe-Zeichen hat in Stapelbefehlen eine besondere Bedeutung, daher muss es entgangen mit dem Caret-Zeichen. Das sollte funktionieren:

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

Obwohl dies wirklich keine gute Möglichkeit ist, Daten in eine Textdatei zu schreiben:Normalerweise sollte SQL Server keine Berechtigung haben, in das Stammverzeichnis von Laufwerk C:und xp_cmdshell zu schreiben ist standardmäßig deaktiviert. Ich schlage vor, Sie schauen sich Alternativen wie sqlcmd.exe an , bcp.exe oder ein kleines Skript in Ihrer bevorzugten Sprache (PowerShell, Perl, Python, was auch immer).

Es ist im Allgemeinen viel einfacher, sicherer und flexibler, Daten von SQL Server abzufragen, als sie von der Serverseite zu übertragen. In Ihrem speziellen Fall sieht es so aus, als ob Sie eine Datei mit Trennzeichen schreiben möchten, und bcp.exe ist für diesen Zweck vorgesehen .