如何在不使用xp_cmdshell的情况下将BLOB varbinary(max)列导出为CSV或excel?

时间:2015-05-20 20:06:28

标签: sql sql-server excel sql-server-2008 blob

禁止使用xp_cmdshell。我在SQL Server 2008R2实例中有一个表,它有一个varbinary(max)BLOB列,我需要输出到CSV或Excel格式。不知道该怎么做。我可以远程登录服务器并在命令提示符下运行SQLCmd但我从未转换过这种类型的数据,所以我不确定语法。任何帮助将不胜感激。在此先感谢!!

1 个答案:

答案 0 :(得分:0)

我会改用BCP.exe。它是一个命令行工具,专为您想要的设计而设计。样品:

bcp.exe [db1].[dbo].[table1] out file1.csv -n -T -S"server1"

如果你想要每个文件一行(我不想问你为什么要这样做),最好的方法是使用脚本(powershell / wscript / jscript / etc.)并解析你的文件, 逐行。

另一种非最佳方法是生成循环遍历每一行(可能带有游标)的TSQL,通过queryout打印出bcp.exe语句。这假设您可以定义某种键,以隔离单行。看下面的伪代码:

-- create and wrap your cursor around this
select 'bcp.exe "select * from dbo.table1 where pkcol = ' + cast(@pkcol as varchar) + ' queryout file1.csv -n -T -S"server1"'
from dbo.table1
where col1 = @pkcol