如何在sql server中将参数传递给bcp命令

时间:2013-03-11 09:59:03

标签: sql sql-server sql-server-2008

我想将查询结果发送到文件,因此尝试使用bcp命令。但不能传递任何参数。它显示错误。

EXEC xp_cmdshell 'bcp "SELECT * FROM CG.dbo.cdyy where EndTime between     DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,'+@date+'),0)) and DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,1,'+@date+')+1,0))  " queryout "D:\cdr_cg.txt" -T -c -t,'

2 个答案:

答案 0 :(得分:4)

在调用master..xp_cmdshell

之前输入参数
DECLARE @date varchar(10) = '20130311',
        @bcp varchar(8000)

SELECT @bcp = 'bcp "SELECT * FROM CG.dbo.cdyy WHERE EndTime between DATEADD(s,0,DATEADD(mm, DATEDIFF(m,0,''' + @date + '''),0)) AND DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,1,'''  + @date + ''')+1,0))  " queryout "D:\cdr_cg.txt" -T -c -t,'

EXEC master..xp_cmdshell @bcp

答案 1 :(得分:0)

我正在使用以下查询,输出如下,并且在所提及的位置找不到文件。

查询:     exec xp_cmdshell'bcp“使用Mimsadaptor;通过logdate”queryout“D:\ cdr_cg.txt”-T -c -t,“从日志顺序中选择前10 *     OUTPUT:     空值     开始复制......     SQLState = 01000,NativeError = 5701     警告= [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]将数据库上下文更改为“MIMSAdaptor”。     空值     复制了10行。     网络包大小(字节):4096     时钟时间(毫秒):总共16     NULL