一尘不染

如何使用带有文本“渱”的sql脚本创建文本文件

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

谢谢


阅读 204

收藏
2021-03-10

共1个答案

一尘不染

管道字符在批处理命令中具有特殊含义,因此必须使用脱字符将其转义。这应该工作:

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.exebcp.exe或者在您的首选语言的一个小脚本(PowerShell中,Perl,Python和其他)。

从SQL
Server查询数据通常比从服务器端推送数据要容易,安全和灵活得多。在您的特定情况下,您似乎想写出一个带分隔符的文件,并bcp.exe打算用于此目的

2021-03-10