【问题标题】:Creating a csv with sqlcmd使用 sqlcmd 创建 csv
【发布时间】:2012-05-03 21:19:02
【问题描述】:

我正在尝试使用 SQL 命令创建 csv。我正在使用一个简单的表格作为测试。到目前为止我已经写了这个:

DECLARE @sql VARCHAR(1000),
        @cmd VARCHAR(100),
        @sqlCommand VARCHAR(1000)

Set @cmd = 'Select * From DSG.Pawtucket.counts'

SET @sqlCommand = 'SQLCMD -S <server> -U <user> -P <password> -d <database> -W -Q "' + @cmd + '"
-s "|" -o <network path> -h-1' 

EXEC master.dbo.xp_cmdshell @sqlCommand

我在“结果”选项卡中看到查询结果,我没有收到任何错误,但我的文件从未创建。我知道我正在使用有效的网络路径。我什至尝试在 SQL 服务器本地 C: 驱动器上创建文件,但没有成功。我也尝试使用 bcp,但很沮丧但没有结果。任何帮助将不胜感激!

【问题讨论】:

    标签: sql sql-server stored-procedures csv sqlcmd


    【解决方案1】:

    去掉字符串中的换行符

    你写的

    SET @sqlCommand = 'SQLCMD -S <server> -U <user> -P <password> -d <database> -W -Q "' + @cmd + '"
    -s "|" -o <network path> -h-1' 
    

    向 xp_cmdshell 发送两条命令

    在结果选项卡中为您提供@cmd 结果的第一个命令。

    SET @sqlCommand = 'SQLCMD -S <server> -U <user> -P <password> -d <database> -W -Q "' + @cmd + '"    
    

    然后这个什么都不做

       -s "|" -o <network path> -h-1'  
    

    下面是你想要的。除了删除回车之外,我还在 '" 之后添加了空格,因为 -s 需要与 @cmd 中的任何内容分开

    SET @sqlCommand = 'SQLCMD -S <server> -U <user> -P <password> -d <database> -W -Q "' + @cmd 
    + '" -s "|" -o <network path> -h-1' 
    

    【讨论】:

    • 谢谢,就是这样!现在我只需要修补我在墙上撞出的那个大洞。说真的……我很感激。我应该能够弄清楚这一点,但我已经很沮丧了,一双新的眼睛真的很有帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-07-03
    • 2023-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    相关资源
    最近更新 更多