2013-05-08 54 views
0

我試圖運行以下命令來生成文件並使用varchar(MAX)數據填充文件。這是一個問題,當我嘗試運行代碼時它會創建文件,但它們是空的。我知道@classString變量中有數據。有沒有一個字符串封閉的序列,我可以環繞@classString來分隔它?我正在嘗試生成一個腳本,因此我假定@classString包含干擾文件寫入的字符。使用t-sql存儲過程將大型varchar(MAX)寫入文件

SET @sqlString = 'echo off > ' + @FilePath + '\' + @table_name + '.cs"' 
exec xp_cmdshell @sqlString 
SET @sqlString = 'echo ' + @classString + ' >> ' + @FilePath + '\' + @table_name + '.cs"' 
exec xp_cmdshell @sqlString 
+0

這不是一個答案,但是您是否考慮過一個小型外部腳本,用於查詢數據庫中的必要數據並寫入文件?使用'xp_cmdshell'編寫文件是非常尷尬的,並且經常導致權限問題。 – Pondlife 2013-05-08 16:36:26

回答

0

有沒有簡單的方法來分隔或引用整個字符串,而是你需要使用^符號轉義任何shell元字符。例如:

SET @classString = (SELECT REPLACE(@classString, '>', '^>')) 
SET @classString = (SELECT REPLACE(@classString, '&', '^&')) 

...等等,可用於您的字符串中的任何cmdshell元字符。

+0

我試過了,文件仍然是空的。簡而言之,proc基於數據庫表結構生成實體(poco)。如果我打印輸出並粘貼到查詢窗口,它會遇到第一個使用語句的問題,更不用說所有c#的特殊字符。我需要或者逃避一切,或者我需要一種不同的方式將文本寫入文件。 – user1790300 2013-05-08 16:06:37

+0

我認爲這個問題與將多行varchar寫入文件有關。一條線可以工作,但多線似乎是一個問題。有沒有辦法使用xp_cmdshell一次將多行寫入文件? – user1790300 2013-05-08 17:09:45

相關問題