У меня довольно простой вопрос (и это, как правило, те, которые я провожу большую часть своего времени, вырывая свои волосы).Я использую пакетный файл для выполнения всех запросов .sql, которые находятся в том же каталоге, что и пакет, и для сохранения всех их результатов в различных файлах .csv.
Вот мой код:
@echo off
REM Check that all parameters are present
@IF "%1"=="" goto error
@IF "%2"=="" goto error
@IF "%3"=="" goto error
@IF "%4"=="" goto error
REM For every *.sql file in this folder "." and all its subfolders (/R), do the following:
@for /R "." %%F in (*.sql) do (
REM Print the command to be executed:
@echo Database : @SqlCmd -S %1 -U %2 -P %3 -d %4 -I -l60 -i "%%F" -o "%%F.output.csv" -h-1 -s"," -w 1000 -W
REM Execute the command:
@SqlCmd -S %1 -U %2 -P %3 -d %4 -I -l60 -i "%%F" -o "%%F.output.csv" -h-1 -s"," -w 1000 -W
)
goto :EOF
:error
@echo Incorrect syntax :
@echo extract.cmd [servername] [user id] [password] [databasename]
@echo
@pause
goto :EOF
В качестве теста я запускаю следующий запрос:
select top(10) [name] from sysobjects
, который выводит:
sysrscols
sysrowsets
sysallocunits
sysfiles1
syspriorities
sysfgfrag
sysphfg
sysprufiles
sysftinds
sysowners
(10 rows affected)
Это прекрасно работает, за исключением двух вещей.Во-первых, мне нужно также выводить заголовки столбцов.Поэтому я удаляю параметр "-h -1", который затем дает:
name
----
sysrscols
sysrowsets
sysallocunits
sysfiles1
syspriorities
sysfgfrag
sysphfg
sysprufiles
sysftinds
sysowners
(10 rows affected)
, что прекрасно, за исключением того факта, что я не хочу горизонтальное правило "------" междузаголовок и первая строка данных.
Кроме того, я не хочу, чтобы выводилась строка "(затронуто 10 строк)".
Кто-нибудь знает, как мне этого добиться?
Спасибо
Карл