使用t-sql存储过程将大型varchar(MAX)写入文件

时间:2013-05-08 00:47:13

标签: sql-server tsql stored-procedures file-io

我正在尝试运行以下命令来生成文件,并使用varchar(MAX)数据量填充文件。这是问题,当我尝试运行代码时,它会创建文件,但它们是空的。我知道@classString变量中包含数据。是否有一个字符串封闭序列,我可以围绕@classString来分隔它?我正在尝试生成一个脚本,所以我假设@classString包含干扰文件写入的字符。

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

1 个答案:

答案 0 :(得分:0)

没有简单的方法来分隔或引用整个字符串,而是需要使用^符号转义其中的任何shell元字符。例如:

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

...依此类推任何可能在您的字符串中出现的cmdshell元字符。