我被禁止使用 xp_cmdshell。我在 SQL Server 2008R2 实例中有一个表,该表有一个 varbinary(max) BLOB 列,我需要将其输出为 CSV 或 Excel 格式。不知道该怎么做。我可以远程登录服务器并在命令提示符下运行 SQLCmd,但我以前从未转换过这种类型的数据,所以我不确定语法。任何帮助将不胜感激。提前致谢!!
最佳答案
我会使用 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
关于sql - 如何在不使用 xp_cmdshell 的情况下将 BLOB varbinary(max) 列导出到 CSV 或 excel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30359377/