Я пытаюсь использовать цикл For в пакетном процессе, чтобы выполнить sqlcmd несколько раз. Предполагается, что цикл For анализирует текстовый файл, где каждая строка - это имя исследования в базе данных. Предполагается, что запрос sqlcmd извлекает соответствующие данные и заполняет файл csv именем исследования. Sqlcmd работает сам, создавая один csv, если я объявил переменную внутренне. Пакетный процесс работает в том, что он анализирует текстовый файл и создает CSV для каждого исследования в нем, но не заполняет файлы. Вот запрос sqlcmd ...
DECLARE @StudyName nvarchar(255)
SET @StudyName='$(StudyName)'
DECLARE @TblTVM TABLE(StudyId int, Animal nvarchar(100), DATE varchar(100), LL float, LWi float, LTVM float)
INSERT INTO @TblTVM (StudyId, Animal, DATE, LL,LWi, LTVM)
SELECT
S.StudyId,
A.PermanentId AS 'Animal',
(CAST(Datepart(Month, V.PerformDateTime) AS varchar(2))) + '/' + (CAST(Datepart(Day, V.PerformDateTime) AS varchar(2))) + '/' + (CAST(Datepart(Year, V.PerformDateTime) AS varchar(4))) AS 'DATE',
V.Length AS 'LL',
V.Width AS 'LWi',
V.Volume AS 'LTVM'
FROM TblStudy S
INNER JOIN tblAnimals A ON S.StudyId = A.StudyID
INNER JOIN TblTumorVolume V ON A.AnimalId = V.AnimalId
INNER JOIN TblImplants I ON V.ImplantId = I.ImplantID
WHERE
S.StudyNumber LIKE @StudyName AND
I.ImplSite LIKE N'Left';
SELECT
L.Animal,
L.DATE,
LL,
LWi,
LTVM
FROM @TblTVM L
ORDER BY
2,
1
А вот и файл .bat ...
@echo off
set /p dir="What file?"
FOR /f %%X in (%dir%) do (
SET "StudyName=%%X"
SQLCMD -d StudyLog_Summary -i C:\Tools\2CSVQuery.sql -o C:\Tools\CSVs\%%X.csv -W -s","
)
Любая помощь в определении того, что мои csv-файлы пусты (т. Е. Завершено 0 строк), была бы отличной
Спасибо,
Джефф