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

谢谢

最佳答案

管道符在批处理命令中有特殊含义,必须为escaped使用插入字符。这应该有效:

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 is intended for that purpose .

关于sql - 如何使用带有文本 "|"的 sql 脚本创建文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14275493/

相关文章:

regex - Clojure 正则表达式匹配

php - 使用递归将 html_entity_decode 应用于对象和数组

php - 具有任意数量 URL 段的 Laravel 4 路由

perl - 调用 ref 没有返回任何东西

google-apps-script - 使用 google-apps-script 了解文件类型

haskell - 与 GADT 的模式匹配

git - 无法将提交推送到 fork 的 repo

apache - 从 XAMPP 运行 apache 服务时出错

list - Scala 列表中的对象类型

python - 如何使用 GitPython 指定 Commit 的 committed_date