我正在使用sql server,我运行了一个导致5000行的查询。我希望每行都保存为单独的文本文件。有没有办法做到这一点?
答案 0 :(得分:1)
使用SSIS,我打算全部输入,但这里有一个网站,详细说明了截图。
https://coldlogics.wordpress.com/2011/04/09/using-ssis-to-dynamically-create-data-files-from-a-full-result-set/
答案 1 :(得分:0)
如果你宁愿在TSQL中这样做。现在,我不能把它归功于存储过程,它是从前一段时间开始的。
您必须在步骤3中修改初始查询和DESTINATION。
1)必要时,只要您拥有适当的权利
EXEC sp_configure 'show advanced options', 1
GO
EXEC sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
2)创建存储过程 - 必须提供YourDatabaseName
CREATE Procedure [dbo].[prc-Write-To-File] (@text as Varchar(Max), @Filename Varchar(200)) AS
Begin
Declare @Object int,@rc int,@FileID Int
EXEC @rc = sp_OACreate 'Scripting.FileSystemObject', @Object OUT
EXEC @rc = sp_OAMethod @Object , 'OpenTextFile' , @FileID OUT , @Filename , 2 , 1
Set @text = Replace(Replace(Replace(@text,'&','&'),'<' ,'<'),'>','>')
EXEC @rc = sp_OAMethod @FileID , 'WriteLine' , Null , @text
Exec @rc = [YourDatabaseName].dbo.sp_OADestroy @FileID
Declare @Append bit
Select @Append = 0
If @rc <> 0
Begin
Exec @rc = [YourDatabaseName].dbo.sp_OAMethod @Object, 'SaveFile',null,@text ,@Filename,@Append
End
Exec @rc = [YourDatabaseName].dbo.sp_OADestroy @Object
End
3)然后从CURSOR中执行
Declare @ID int,@String varchar(max)
Declare @Cursor as Cursor;
Set @Cursor = Cursor For
Select top 5 OD_Nr,OD_Title from OD --<< Your QUERY goes here
Open @Cursor;
Fetch Next From @Cursor into @ID, @String;
While @@FETCH_STATUS = 0
Begin
Print cast(@ID as VARCHAR (50)) + ' ' + @String;
Declare @Destination varchar(150)
Set @Destination = 'c:\working\test_' +cast(@ID as varchar(25))+'.txt'
Exec [dbo].[prc-Write-To-File] @String,@Destination
Fetch Next From @Cursor Into @ID, @String;
End
Close @Cursor;
Deallocate @Cursor;