在批处理文件中使用sqlcmd将Timestamp放在输出文件上

时间:2013-02-26 06:47:27

标签: sql-server batch-file timestamp sqlcmd

我已在批处理文件中编写了foll sql查询,以从远程服务器获取结果。

SQLCMD -S "ServerName -U "uer" -P "Pass" -W -d"Interface" -Q"select LEFT(Zone_Prefix,5)+case when RIGHT(Zone_prefix,1)='N' then '_NORTH_WING' ELSE '_SOUTH_WING' END AS [Zone Name],cnt as [Zone Count] from ( SELECT  LEFT([Zone Name], 6) AS Zone_Prefix,SUM([Zone Count]) cnt FROM [Interface].[dbo].[VwZoneCount] WHERE [Zone Name] IN ('EB2GFNMZ','EB2GFSMZ','EB2GFNZ1','EB2GFSZ1','EB21FNZ1','EB21FSMZ','EB21FSZ1','EB22FNZ1','EB22FSZ1','EB22FSMZ','EB23FNMZ','EB23FNZ1','EB23FNZ2','EB23FNZ3','EB23FSMZ','EB23FSZ1','EB23FSZ2','EB24FNMZ','EB24FNZ1','EB24FSMZ','EB24FSZ1','EB25FNMZ','EB25FNZ1','EB25FSMZ','EB25FSZ1','EB26FNMZ','EB26FNZ1','EB26FSMZ','EB26FSZ1','EB27FNZ1','EB27FSMZ') GROUP BY LEFT([Zone Name], 6))tbl" -s"    " -o"Output_hvac.xls"

我使用任务计划程序每4小时执行一次此查询。目前,对于每次执行,结果都会被覆盖。 我需要在每次执行后将新结果附加或存储在具有时间戳的不同文件中。 我主要担心的是设置时间戳并保留以前执行的所有数据。

由于

2 个答案:

答案 0 :(得分:1)

当然可以在文件名中添加时间戳,但批量操作很麻烦。

您的第一个追加选项要简单得多。消除-o选项,然后使用追加重定向。添加时间戳只需要重定向的ECHO语句。

>>"Output_hvac.xls" echo %date% %time%
>>"Output_hvac.xls" SQLCMD ...your_options_minus_the_-o_option...

>>"Output_hvac.xls" (
  echo %date% %time%
  SQLCMD ...your_options_minus_the_-o_option...
)

答案 1 :(得分:0)

尝试:

-o“ Output_hvac_%date:〜6,4 %% date:〜3,2 %% date:〜0.2%_%time:〜0.2 %% time:〜3.2%.xls “

输出应如下所示:

Output_hvac_20181016_ 919.xls