パイプ文字はバッチコマンドで特別な意味を持つため、エスケープ キャレット文字を使用します。これは機能するはずです:
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
これは実際にはテキストファイルにデータを書き込むための良い方法ではありませんが、通常、SQL ServerにはC:ドライブのルートおよびxp_cmdshell
に書き込む権限がないはずです。 デフォルトでは無効になっています。 sqlcmd.exe
のような代替案を検討することをお勧めします 、bcp.exe
または、好みの言語(PowerShell、Perl、Pythonなど)の小さなスクリプト。
一般に、SQL Serverからデータをクエリする方が、サーバー側からデータをプッシュするよりもはるかに簡単で、安全で、柔軟性があります。特定のケースでは、区切られたファイルを書き出すように見えます。 bcp.exe
その目的のために意図されています
。