在平时工作中经常会遇到,sql 查询数据之后需要发送给业务人员,每次都手工执行脚本然后拷贝数据到excel中,比较耗时耗力,可以考虑自动执行查询并将结果邮件发送出来。
分两步实现:
1、执行查询将结果保存为excel,这里使用存储过程
1 Create procedure [dbo].[pr_Dept_Bak] 2 3 as 4 5 begin 6 7 ---这里可以增加对数据表的查询条件或更多的数据处理; 8 9 ---将结果放入一个新的数据表,然后将这个新表导出EXCEL文件; 10 11 declare @file_path varchar(200);--导出EXCEl文件的路径; 12 13 declare @file_name varchar(200);--导出EXCEl的文件名; 14 15 declare @exec_sql varchar(200);--SQL语句; 16 17 ---分开定义是为了以后修改路径或文件名更方便。 18 19 set @file_path = ‘E:\Dept_Bak\‘ 20 21 set @file_name = ‘dept‘ + CONVERT(varchar(100), GETDATE(), 112)+‘.xls‘ 22 23 set @exec_sql = ‘select * from book.dbo.users_dept‘ ---数据表使用的完整路径; 24 25 set @exec_sql = ‘ bcp "‘+@exec_sql+‘" queryout "‘+@file_path+‘‘+@file_name+‘" -c -T -U "sa" -P "SQLpassword"‘; 26 27 ----U "sa" -P "SQLpassword" 这是数据库的sa账号和密码; 28 29 exec master..xp_cmdshell @exec_sql 30 31 end