首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将SQL Server存储过程的输出存储在.txt文件中

如何将SQL Server存储过程的输出存储在.txt文件中
EN

Stack Overflow用户
提问于 2018-10-21 23:54:46
回答 2查看 32.6K关注 0票数 4

我有这个存储过程;我在SSMS中打印变量的值。相反,我希望将此结果存储在一个.txt文件中。

注意:我不想使用SSMS选项右键单击结果,然后将结果另存为。我希望直接使用存储过程本身中的任何SQL代码/内置函数来完成此操作。

代码语言:javascript
复制
CREATE PROCEDURE [dbo].[usp_printresulttofile]
AS
BEGIN
    DECLARE @var NVARCHAR(MAX) = ''
    SET @var = 'print this data in txt file'

    PRINT 'Data is : ' + @var   
    /* SQL query here to store result of Print statement in text file */
END

EXEC [dbo].[usp_printresulttofile]

在这里分享更新后的工作SP,以便对有类似需求的人有用,感谢@David Browne - Microsoft

代码语言:javascript
复制
ALTER PROCEDURE [dbo].[usp_printresulttofile]
AS
BEGIN
    DECLARE @fileTimeStamp varchar(200) =  convert(varchar,getDate(), 112 )+'_'+ Replace(convert(varchar,getDate(), 114 ),':','')  -- select convert(varchar, getdate(), 121)

    DECLARE @fileExtension varchar(5) = 'txt'
    DECLARE @var NVARCHAR(MAX) = ''
    SET @var = 'print this data in txt file'
    PRINT 'Data is : ' + @var   


  declare @fn varchar(500) = 'c:/log/SP_output_'+@fileTimeStamp+'.'+@fileExtension;
    declare @cmd varchar(8000) = concat('echo ', @var, ' > "', @fn, '"');

    print @cmd 
    exec xp_cmdshell @cmd,  no_output

    set @cmd  = concat('type "', @fn, '"');

    print @cmd 
    exec xp_cmdshell @cmd;

    END
    GO
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-10-22 01:36:55

正如评论和其他答案所表明的那样,这通常不是一个好主意。但是,假设您是SQL Server上的系统管理员,下面将介绍如何执行此操作。:)

代码语言:javascript
复制
-- To allow advanced options to be changed.  
EXEC sp_configure 'show advanced options', 1;  
GO  
-- To update the currently configured value for advanced options.  
RECONFIGURE;  
GO  
-- To enable the feature.  
EXEC sp_configure 'xp_cmdshell', 1;  
GO  
-- To update the currently configured value for this feature.  
RECONFIGURE;  
GO

CREATE OR ALTER PROCEDURE [dbo].[usp_printresulttofile]
AS
BEGIN
    DECLARE @var NVARCHAR(MAX) = ''
    SET @var = 'print this data in txt file'
    PRINT 'Data is : ' + @var   

    declare @fn varchar(200) = 'c:\temp\out.txt';

    declare @cmd varchar(8000) = concat('echo ', @var, ' > "', @fn, '"');

    print @cmd 
    exec xp_cmdshell @cmd,  no_output

    set @cmd  = concat('type "', @fn, '"');

    print @cmd 
    exec xp_cmdshell @cmd;


END
go
EXEC [dbo].[usp_printresulttofile]
票数 5
EN

Stack Overflow用户

发布于 2018-10-22 00:09:39

使用bcp命令将数据复制为任何格式。你只需要提到你想要的格式。像.text一样

bcp 'select * from table‘queryout c:\sql\bcp.txt -c -T

以下链接中的示例和解释:- https://www.mssqltips.com/sqlservertip/4353/export-sql-server-records-into-individual-text-files/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52917125

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档