从SQL Server导出值到txt文件

5

我希望能将SQL Server中的数值导出到txt文件中。我知道BCP可以实现这个功能,但是需要提供查询或表名才能从表中导出数据。我并不想导出数据,而是想导出赋给变量的数值。有什么办法可以实现吗?谢谢!


“将值赋给变量的导出”是什么意思呢? - user2339071
声明 @var int=10 - niren
在管理工作室中,您可以从命令工具栏(或CTRL+T)设置“结果为文本”选项,无论您在查询窗口中执行什么操作,结果都将保存到文本文件中。 - Nenad Zivkovic
@NenadZivkovic 谢谢您的回答,但我想通过在查询编辑器中执行查询来获得 .txt 文件。 - niren
这不就是我建议的吗? - Nenad Zivkovic
显示剩余4条评论
1个回答

5

使用查询收集您想要导出的变量。就像这样:

DECLARE @var1 INTEGER
DECLARE @var2 INTEGER

SELECT @var1 = 10
SELECT @var2 = 22

SELECT 'variable 1' AS VarName, @var1 AS VarValue
UNION
SELECT 'variable 2' AS VarName, @var2 AS VarValue

在下面的命令中使用此查询语句。使用queryout并替换[querystatement]为上面的语句,或者使用一个变量来代替查询字符串。
EXEC master..XP_CMDSHELL 'bcp "[querystatement]" queryout "c:\spt_values.dat"'

如果变量需要在语句之外声明:
DECLARE @cmd varchar(1000)
DECLARE @sql varchar(8000) 
DECLARE @var1 int
SELECT @var1 = 10
SET @cmd='"select '+CAST(@var1 AS VARCHAR(10))+'"' 
SELECT @sql = 'bcp '+@cmd+' queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS';
exec xp_cmdshell @sql;

我在你的回答中没有找到如何将值导出到.txt文件的方法,但我尝试使用BCP导出给定的查询,但它不起作用,还有其他方法可以做到这一点吗? - niren
如果我像这样使用它,它是有效的: declare @cmd varchar(1000) declare @sql varchar(8000) set @cmd='"DECLARE @var1 int;SELECT @var1 = 10;select @var1"' SELECT @sql = 'bcp '+@cmd+' queryout I:\File\mytest.txt -c -t -T -S YAMUNA\SQLEXPRESS'; exec xp_cmdshell @sql; 但我想要在引号外部声明和分配变量 @var1 - niren
因为我将从另一个表中获取值并将该变量的值导出到 .txt 文件。 - niren
我尝试执行您更新后的代码,但出现错误:“在将 varchar 值 'select ' 转换为数据类型 int 时转换失败。” 然后我将 int 更改为 varchar(100) 并使用了 select @var1='text',但它仍然给出错误:“错误 = [Microsoft][SQL Server Native Client 11.0][SQL Server]无效的列名 'text'。” - niren
1
将@var1转换为VARCHAR(10) 或者在文本的情况下添加引号(2个单引号): SET @cmd='"select '''+CAST(@var1 AS VARCHAR(10))+'''"' - Wietze314
显示剩余4条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接