Как динамически назвать вывод файла sql в sqlcmd - PullRequest
0 голосов
/ 08 января 2020

Цель:

Я хотел бы создавать дамп CSV на еженедельной основе. Я хотел бы назвать свой файл динамически с указанием даты.

Текущий код, который у меня есть:

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

Ответы [ 2 ]

1 голос
/ 08 января 2020

Попробуйте:

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, которая возвращает 4 символа, начиная с позиции 6, которая возвращает Year. Аналогично, извлекаем месяц, день, час, минуты, используя ту же функцию, и добавляем все это вместе, чтобы сгенерировать имя файла в формате «имя-ГГГГММДД-ЧЧММ»

0 голосов
/ 08 января 2020

PowerShell позволит вам контролировать форматирование даты. Это удаляет любую жестко закодированную зависимость от указанной c локали. Если вы используете поддерживаемую Windows систему, PowerShell будет доступен.

Я также заменил name стандартным значением переменной USERNAME.

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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...