Я новичок в пакетном скриптинге и пытаюсь запустить несколько файлов sql, которые, в свою очередь, могут содержать несколько запросов sql DML / DDL из файла bat. Выходные файлы должны содержать все выполняемые запросы и выходные данные запроса. В отличие от этого примера , у меня нет команды спула внутри моего файла sql, и я не могу редактировать входные файлы sql. Следующая команда работает для меня в ksh-файле (спасибо здесь-документу):
$sqlplus /nolog <<! >>$sqlLogs.lst
connect $USERNAME/$PASSWORD@${DBNAME}
set echo on timing on
spool ${SCRIPTRUNFILE_SPOOL}
select name from v\$database;
@${SCRIPTRUNFILE};
spool off
exit
!
Я хочу то же самое в Windows bat-файле. Я пытался , используя ^ . Я не могу объединить все файлы SQL в один , так как мне нужно войти для каждого файла SQL в другой файл. Моя попытка написания скрипта в bat-файле заключается в следующем, и я много поиграл с этим, и он не работает с spool command not recognized
. В приведенных ниже командах я также добавил префикс sqlplus
, но все еще не смог достичь чего-то похожего на приведенный выше файл ksh:
sqlplus -s username/pwd@DBName >> sqlLogs.lst
set echo on timing on
spool %RUNFILENAME%.lst
@%RUNFILENAME% > %RUNFILENAME%.lst
select name from v\$database;
spool off
quit
Следующая логика выполняет мои сценарии, но не регистрирует выполняемый запрос. Кроме того, я не хочу дважды подключаться к базе данных.
echo select name from v$database; | sqlplus -s username/pwd@DBName >> sqlLogs.lst
echo quit | sqlplus -s username/pwd@DBName @%SCRIPTRUNFILE%>> %SCRIPTRUNFILE_SPOOL%.lst
Может ли кто-нибудь здесь помочь спулингу в файл, где я также могу регистрировать запросы, сохраняя при этом одно соединение с БД?