sql 存储过程导出指定数据到.txt文件(定时)

需求:每天生成一份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”。

上一篇:C#稳固基础:传统遍历与迭代器


下一篇:MySQL在command line Client下的一些命令