【问题标题】:How to escape Newline in ECHO command with sql如何使用 sql 在 ECHO 命令中转义换行符
【发布时间】:2014-03-21 11:37:33
【问题描述】:

我有一个用于将数据从 SQL Server 导出到本地硬盘的格式文件。 我必须通过 SQL 命令在远程机器上创建这个 Format 文件。

Server srv = new Server(conn);    
server.ConnectionContext.ExecuteNonQuery("xp_cmdshell 'ECHO 10.0 1 1       SQLBINARY           8       0       \"\"   1     blob                 \"\">> " + destinationPathFormat + "'");

如果没有换行符转义,格式文件无效并且无法导出数据。 字符串必须在此处转义:10.0 [ESCPAPE] 1 [ESCAPPE] 1

提前致谢。

【问题讨论】:

    标签: sql-server cmd escaping echo xp-cmdshell


    【解决方案1】:

    由于echo 附加换行符,您可以发出多个回显命令。

    server.ConnectionContext.ExecuteNonQuery(
        "xp_cmdshell 'ECHO line1 >> " + destinationPathFormat + "'");
    server.ConnectionContext.ExecuteNonQuery(
        "xp_cmdshell 'ECHO line2 >> " + destinationPathFormat + "'");
    server.ConnectionContext.ExecuteNonQuery(
        "xp_cmdshell 'ECHO line3 >> " + destinationPathFormat + "'");
    

    您已经在使用>>,它附加到一个文件,而不是>,它创建一个文件。

    【讨论】:

    • 这很奇怪。您可以尝试使用^ 转义字符,例如echo ^|。在我的系统上,1 不需要。
    猜你喜欢
    • 2012-02-06
    • 2021-07-22
    • 1970-01-01
    • 2019-01-06
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-19
    相关资源
    最近更新 更多