繁体   English   中英

如何在 sqlcmd 中动态命名 sql 文件的输出

[英]How to dynamically name output of a sql file in sqlcmd

客观的:

我想每周创建一个 CSV 转储。 我想用日期动态命名我的文件。

我目前的代码是:

sqlcmd -S INSTANCENAME -i c:\Users\name\Desktop\test.sql -o c:\Users\name\Desktop\name_$DYNAMIC$DATE.csv

试试这个:

set timehour=%time:~0,2%
sqlcmd -S INSTANCENAME -i c:\Users\name\Desktop\test.sql -o c:\Users\name\Desktop\name-%date:~-4,4%%date:~-10,2%%date:~-7,2%-%timehour: =0%%time:~3,2%.csv

您可以尝试使用 Echo 查看输出

set timehour=%time:~0,2%
echo name-%date:~-4,4%%date:~-10,2%%date:~-7,2%-%timehour: =0%%time:~3,2%.csv

%date% 以短格式返回当前日期。 ":~6,4" 部分就像一个 SUBSTRING 函数,它返回从位置 6 开始的 4 个字符,返回年份。 同样,使用相同的函数检索月、日、小时、分钟并将所有这些附加在一起以生成格式为“name-YYYYMMDD-HHMM”的文件名

PowerShell 将让您控制日期的格式。 这消除了对特定语言环境的任何硬编码依赖。 如果您使用的是受支持的 Windows 系统,则 PowerShell 将可用。

我还用标准的USERNAME变量值替换了name

FOR /F %A IN ('powershell -NoLogo -NoProfile -Command "Get-Date -Format 'yyyyMMdd-HHmm'"') DO (SET "DYNAMICDATE=%A")
sqlcmd -S INSTANCENAME -i "C:\Users\%USERNAME%\Desktop\test.sql" -o "C:\Users\%USERNAME%\Desktop\%USERNAME%_%DYNAMICDATE%.csv"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM