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 时,返回计数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值