Вы не указываете, какой сервер sql вы используете, в этом примере я буду использовать Firebird.Если вы используете другой сервер SQL, вы должны использовать правильный инструмент командной строки SQL и синтаксис.firebird использует isql.exe.
Предполагается, что у меня есть следующий текстовый файл "input.sql", содержащий 4 команды sql:
select * from CUSTOMER;
select * from DEPARTMENT;
select * from EMPLOYEE;
select * from SALES;
Затем этот пакетный файл выполнит каждую команду, используя isql.exeи создает отдельный выходной файл для каждой команды:
@echo off
set sql_exe="C:\Program Files\Firebird\Firebird_2_5\bin\isql.exe"
set sql_options=-u sysdba -p masterkey
set sql_db="C:\Program Files\Firebird\Firebird_2_5\examples\empbuild\EMPLOYEE.FDB"
set count=1
for /f "delims=" %%a in (input.sql) do (
echo %%a > temp.sql
call :processtemp_sql
)
goto :eof
:processtemp_sql
%sql_exe% %sql_options% -i temp.sql -o output%count%.txt %sql_db%
set /A count=%count%+1
goto :eof
:eof
в конце создаются output1.txt..output4.txt.Каждый файл содержит выходные данные одной команды sql.