如果我在不带字符“ |”的脚本下运行 它正常工作,但是当我添加字符“ |”时 如何添加字符“ |”不起作用 使用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
谢谢
管道字符在批处理命令中具有特殊含义,因此必须使用脱字符将其转义。这应该工作:
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和其他)。
xp_cmdshell
sqlcmd.exe
bcp.exe
从SQL Server查询数据通常比从服务器端推送数据要容易,安全和灵活得多。在您的特定情况下,您似乎想写出一个带分隔符的文件,并bcp.exe打算用于此目的。