微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLServer中用Sqlcmd 定时导出查询结果

需求:有一批数据需要每月初从sqlServer中定时将上个月符合条件的结果导出。

原理:利用Windows中用批处理和定时任务实现定时导出。

 

步骤:

1.   用sqlcmd查询指定的sql语句,并把查询结果输出到本地文件

2.   用xcopy 把查询结果拷贝到其它机器指定的目录下。

 

脚本如下:

@echo off

set /a v_last_month=%date:~4,2%-1

 

set v_year=%date:~10,4%

 

if %v_last_month%  leq  9 (

set  v_outputfile=tblcalls%date:~10,4%0%v_last_month%.txt

)

 

if %v_last_month%  gtr  9 (

set  v_outputfile=tblcalls%date:~10,4%%v_last_month%.txt

)

 

sqlcmd  -h -1 -W -s" "  -Q "SET NOCOUNT ON ; select  * from  test.dbo.volvo_last_month_call " > %v_outputfile%

 

 xcopy %v_outputfile%  \\192.168.0.100\mabfiles\RECYCLER\%v_year%\tblcalls\   /Q

 

把以上内容保存为bat文件,加到windows中的定时任务中即可实现定时导出sqlServer中的查询结果到文件中。

如果要导出的文件比较多,也可是尝试使用kettle工具和定时任务配合来实现导出。

 

sqlcmd 参数解释:

详见:http://technet.microsoft.com/zh-cn/library/ms162773(v=sql.105).aspx

 

-h headers

指定要在列标题之间输出的行数。认为每一组查询结果输出一次标题。此选项设置 sqlcmd 脚本变量 sqlCMDHEADERS。使用 -1 指定不能输出标题。任何无效的值都将导致 sqlcmd 生成错误消息并随后退出

 

-W remove trailing spaces

此选项删除列的尾随空格。在准备要导出到另一应用程序的数据时,请将此选项和 -s 选项一起使用。不能与 -y 或 -Y 选项一起使用。

 

-Q"cmdline query " and exit

sqlcmd 启动时执行查询,随后立即退出 sqlcmd。可以执行多个以分号分隔的查询

 

当 SET NOCOUNT 为 ON 时,不返回计数(表示受Transact-sql 语句影响的行数)。

当 SET NOCOUNT 为 OFF 时,返回计数

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐