首页 > 技术文章 > sql 存储过程导出指定数据到.txt文件(定时)

yonguibe 2014-03-24 17:33 原文

需求:每天生成一份txt文件数据,供第三方通过http方式调用

方法:

1、新建存储过程:

USE [LocojoyMicroMessage]
GO
/****** Object:  StoredProcedure [dbo].[sp_ExportTxt]    Script Date: 03/24/2014 10:08:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:xxx
-- Create date:xxxx-xx-xx
-- Description: 定时导出前一天数据 -- ============================================= -- 开通xp_cmdshell权限 -- EXEC sp_configure 'show advanced options', 1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell', 1;RECONFIGURE; -- 新建作业:每天凌晨1点执行 ALTER PROCEDURE [dbo].[sp_ExportTxt] AS Begin declare @sqlstr varchar(3000) declare @pathStr varchar(3000) declare @fileName varchar(3000) set @pathStr='c:\abc\' --
set @fileName='前缀_'+convert(varchar(10),getdate()-1,112) select CONVERT(varchar(50), col1, 20)+'|'+CONVERT(varchar(50),gameServerId)+'|' + case Productid when 'xxx' then 'TWD' else 'USD' end +'|' +CONVERT(varchar(50),isnull(amount,0))+'|' + + CONVERT(char(6),logTime,112) as colName into ##TemAAADate from dbo.表名 where CONVERT(varchar(100), logTime, 23)=CONVERT(varchar(100), GETDATE()-1, 23) --前一天数据 set @sqlstr='bcp "select * from ##TemAAADate" queryout "' + @pathStr + @fileName +'.txt" -c -T -x' exec master.dbo.xp_cmdshell @sqlstr drop table ##TemAAADate End -- EXEC [dbo].[sp_ExportTxt]

2、创建sql作业代理 exec 上面存储过程,每天凌晨1点执行

3、创建一个空的web站点,把第一步生成的txt文件 生成到这个web站点的一个固定目录下,这样第三方就可以访问了“http://xxxx:8005/datalist/2014-03-21.txt”。

推荐阅读