如何使用带有文本"|"的sql脚本创建文本文件

Yog*_*esh 1 sql sql-server sql-scripts

如果我在脚本下运行没有字符"|" 它工作,但当我添加char"|" 它不工作如何添加char"|" 使用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
Run Code Online (Sandbox Code Playgroud)

谢谢

Pon*_*ife 5

管道字符在批处理命令中具有特殊含义,因此必须使用插入符字符对其进行转义.这应该工作:

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
Run Code Online (Sandbox Code Playgroud)

虽然这不是将数据写入文本文件的好方法:通常SQL Server不应该有权写入C:驱动器的根目录,并且xp_cmdshell默认情况下是禁用的.我建议你用你喜欢的语言(PowerShell,Perl,Python等等)查看替代方案sqlcmd.exe,bcp.exe或者一个小脚本.

从SQL Server查询数据通常比从服务器端推出数据更容易,更安全,更灵活.在您的特定情况下,您似乎想要写出分隔文件,并且bcp.exe用于此目的.