2015-05-20 28 views
0

我被禁止使用xp_cmdshell。我在SQL Server 2008R2實例中有一個表,它具有需要輸出爲CSV或Excel格式的varbinary(max)BLOB列。不知道如何做到這一點。我可以遠程登錄到服務器並在命令提示符下運行SQLCmd,但是我從未轉換過這種類型的數據,因此我不確定語法。任何幫助將不勝感激。提前致謝!!如何在不使用xp_cmdshell的情況下將BLOB varbinary(max)列導出爲CSV或Excel?

回答

0

我會用BCP.exe來代替。它是一個命令行工具,專爲您想要做的事情而設計。示例:

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

如果你想每個文件的單行(我不會問你爲什麼要做到這一點),最優化的方式是使用腳本(PowerShell中/ WScript的/ JScript中的/ etc。)並逐行解析文件。

另一個非最佳方法是生成循環遍歷每一行(可能使用遊標)的TSQL,並通過查詢打印出您的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 
+0

感謝您的建議。如果我想每行輸出一個具有BLOB數據的文件,我該如何去做呢? – MisterVince

+0

您可以編寫查詢來生成您的bcp.exe,而不是使用查詢選項。見上面的編輯。 – Greg

+0

工程很好。謝謝!!! – MisterVince

相關問題