sql - 使用 bcp 实用程序将 SQL 查询导出到文本文件

标签 sql sql-server debugging sql-server-2005 bcp

我调试一个存储过程 (SQL Server 2005),我需要找出数据表中的一些值。

该过程由应用程序的事件运行,我只观察调试输出。

我执行以下存储过程(SQL Server 2005),我以系统表(master.dbo.spt_values)为例:

set @logtext = 'select name, type from master.dbo.spt_values where number=6'
--set @logtext = 'master.dbo.spt_values'
SET @cmd = 'bcp ' + @logtext + ' out "c:\spt_values.dat" -U uId -P uPass -c'
EXEC master..XP_CMDSHELL @cmd 

因此,当我像一切正常一样取消第二个注释时,C:\驱动器上会出现一个文件...但是如果我将其注释回来,只留下第一行,则会生成任何输出。

如何解决这个问题?

最佳答案

bcp out 导出表。

要导出查询,请使用 queryout - 您需要将查询括在“双引号”中

set @logtext = '"select name, type from master.dbo.spt_values where number=6"' 
--set @logtext = 'master.dbo.spt_values' 
SET @cmd = 'bcp ' + @logtext + ' queryout "c:\spt_values.dat" -U uId -P uPass -c' 
EXEC master..XP_CMDSHELL @cmd  

http://msdn.microsoft.com/en-us/library/ms162802.aspx

关于sql - 使用 bcp 实用程序将 SQL 查询导出到文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140947/

相关文章:

sql - 用于动态 sql 透视的 Oracle 函数

php - 如何创建查询以获得正确的复数结果?

c# - 我们如何从 SQL Server CLR 调用 SSL Web 服务?

gdb - 检查 GDB 中的函数返回值

php - 获取当月和下个月的记录

mysql - 使用左连接计算来自另一个 mysql 表的记录

c# - 解析 SQL 语句以查看它是否不是 SELECT 语句?

sql-server - 如何在两个不同名称的表之间进行复制?

c# - 在 C# 中调试窗口系统服务

c - 在 C 中打印不同调试消息的正确方法?