使用sqlcmd创建csv

时间:2012-05-03 21:19:03

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

我正在尝试使用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很沮丧而且没有结果。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:4)

摆脱文字字符串

中的换行符

你写的是什么

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'