怎么定时自动将SQL数据导出为Excel文件
的有关信息介绍如下:在SQL的数据应用中,我们有时候需要将SQL中某个数据表定时自动导出成Excel文件,以作直观地查看数据,甚至可以将此Excel文件定时自动发送给指定的邮件联系人。
本经验采用方法:
1、编写SQL存储过程(procedure);
2、使用SQL的BCP与execmaster..xp_cmdshell命令完成指定数据表或内容导出;
3、使用SQL Server代理作业实现定时自动执行导出。
下面是过程详解,若你还有更好的方式,盼告知。
Create一个新的procedure,在开头可以做一个判断来决定什么时候执行数据结果导出,下面来看看这个存储过程:
Create procedure[dbo].[pr_Dept_Bak]
as
begin
---这里可以增加对数据表的查询条件或更多的数据处理;
---将结果放入一个新的数据表,然后将这个新表导出EXCEL文件;
declare@file_pathvarchar(200);--导出EXCEl文件的路径;
declare@file_namevarchar(200);--导出EXCEl的文件名;
declare@exec_sqlvarchar(200);--SQL语句;
---分开定义是为了以后修改路径或文件名更方便。
set@file_path='E:\Dept_Bak\'
set@file_name='dept'+CONVERT(varchar(100),GETDATE(),112)+'.xls'
set@exec_sql='select*frombook.dbo.users_dept' ---数据表使用的完整路径;
set@exec_sql='bcp"'+@exec_sql+'"queryout"'+@file_path+''+@file_name+'"-c-T-U"sa"-P"SQLpassword"';
----U"sa"-P"SQLpassword" 这是数据库的sa账号和密码;
execmaster..xp_cmdshell@exec_sql
end
以上存储过程pr_Dept_Bak建立,需要导出的数据表是users_dept,导出的位置是数据库本地计算机的E:\Dept_Bak文件夹下。需要将这个文件夹建立好。
准备好之后,我们需要进行测试一下pr_Dept_Bak是否成功,执行pr_Dept_Bak存储过程,可以看到执行结果是成功的,若这里不成功,则需要检查一下带存储过程中的BCP与execmaster..xp_cmdshell命令的格式是否正确。
导出功能实现了,现在需要设置定时自动执行导出。在SQLServerManagementStudio中,SQL Server代理-作业-新建作业。
为新的作业设定名称,可以中文或英文,只是为了方便区分其它作业。
在步骤中,点击新建作业执行步骤。即需要定时自动执行的存储过程pr_Dept_Bak。为什么使用的存储过程,也是因为以后需要添加或修改功能更方便,而且存储过程更文件测试问题所在。
注意选择数据库,命令中输入execpr_Dept_Bak 执行存储过程。因为命令语句都在存储过程中,所以这里就相对比较简单。
最后就是设定定时自动执行计划,如每天的XX时间自动执行这个存储过程,或间隔多少小时导出SQL表一次。
作业建立之后,则可以执行作业步骤来测试一次,是成功,右键点击建立的作业pr_Dept_Bak,作业开始步骤。
作业成功,若不成功,可以看到错误提示,可以在作业活动监视器中查看作业失败的原因,针对解决问题。
到E:\Dept_Bak文件夹下,可以看到导出的EXCEL文件了,接下来还可以使用的SQL的邮件功能,自动将这个EXCEL文件发送给指定的邮箱接收者。
43SQL自动发邮件SQL数据库邮件配置教程
38SQL数据库邮件测试不成功问题解决方法