2013-01-11 41 views
0

如果我運行下面的腳本沒有字符「|」它工作,但當我加入字符「|」它不工作 如何添加char「|」使用sql腳本來文本文件?如何使用帶有文本「|」的sql腳本創建文本文件

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 

感謝

+0

查詢中'|'的用途是什麼? –

+0

我想以格式 – Yogesh

+0

的文本文件添加數據,如data1 |消息|日期 – Yogesh

回答

4

管道字符在批處理命令一個特殊的意義,因此必須使用脫字符是escaped。這應該工作:

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服務器不應該有寫權限到C盤根:驅動器,xp_cmdshell被禁用默認。我建議你看一下像sqlcmd.exe,bcp.exe之類的替代方案,或者使用你的首選語言(PowerShell,Perl,Python,或者其他)的小腳本。

它通常是更容易,更安全,更靈活地從SQL Server查詢數據比它是從服務器端推了出來。在你的具體情況下,它看起來像你想寫出一個分隔文件,並bcp.exe is intended for that purpose

+0

謝謝你,它的工作 – Yogesh

0

有兩對單引號把它包起來,

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 
+0

獲取錯誤信息 – Yogesh

+0

'''不被識別爲內部或外部命令, 可操作的程序或批處理文件。 NULL – Yogesh

+0

試過'「Hello world |」'?所以一個「而不是兩個」' – YvesR

相關問題