2009-11-21 46 views
0

我試過BCP,但不起作用。 Sql不斷給我一些幫助文本..如何導出到Stored Proc中的文件?

無論如何,這並不重要,因爲我不想粘貼存儲過程再次的內容到一個字符串,所以這可以導出。

我的問題:我有一個現有的存儲過程。我希望它能夠自動將結果放入一個文本文件中。

任何線索?

+0

@KevinDeus - 當bcp調用不正確時拋出幫助文本。你能否粘貼一個不適合你的例子?也許有人可以修復你的語法。 – 2009-11-21 00:49:05

+0

不幸的是,我的工作防火牆不會讓它通過!所以我不得不剝奪它。 你是說BCP是一個很好的方法用於出口在現有的存儲過程?你不需要再次複製存儲的proc文本嗎? – KevinDeus 2009-11-21 00:52:10

回答

0

這是很容易

CREATE PROCEDURE sp_AppendToFile(@FileName爲varchar(255),@文本1 VARCHAR(255))AS DECLARE @FS INT,@OLEResult INT,@FileID INT

EXECUTE @ OLEResult由sp_OACreate = 'Scripting.FileSystemObject的',@FS OUT IF @OLEResult <> 0 PRINT 'Scripting.FileSystemObject的' :打開一個文件執行所 = @OLEResult sp_OAMethod將向@FS, '的OpenTextFile',@FileID OUT,@FileName, 8,1 IF @OLEResult <> 0打印'OpenTextFile'

--write文本1 執行@OLEResult = sp_OAMethod將向@FileID, '的WriteLine',NULL,@文本1 IF @OLEResult <> 0 PRINT '的WriteLine'

EXECUTE @OLEResult = sp_OADestroy的@FileID EXECUTE @ OLEResult = sp_OADestroy的@FS

來自:http://www.motobit.com/tips/detpg_SQLWrFile/

+0

好的,所以這是按字段? – KevinDeus 2009-11-21 01:02:49

+0

這對我來說很有效,但它一次只能用於一個領域。如果有一種方法一次輸出整個行或表格會更好。 – KevinDeus 2009-12-11 18:52:45

0

假設你已經存儲過程MyProc在mydb數據庫服務器上的MyServer,並且要在製表符分隔的輸出文件MyResults結果:

BCP 「EXEC MyDB.dbo.MyProc」 queryout MyResults -T -c -t \ t -s服務器

應該工作。 bcp也提供了很多其他的輸出選項。