#batch-file #cmd #sqlcl
#пакетный файл #cmd #sqlcl
Вопрос:
Я запускаю простой пакетный файл для выполнения инструкции SQL.
Командный файл:
cd /D C:sqlclbin
sql username/password@host:port:SID @C:scriptsstatement.sql
exit
Инструкция SQL выполняется отлично. Он преобразует результаты запроса в файл CSV и возвращается к SQL>
приглашению.
Проблема в том, что пакетный файл не переходит к следующей строке для выхода из SQL и окна CMD. Независимо от того, какую команду я тестирую, командный файл не переходит на 3-ю строку.
Есть ли что-то, что мне нужно добавить в *.sql
файл, чтобы принудительно завершить его? Я что-то упускаю при использовании exit? Я пытался QUIT
HOST
вернуться в CMD, ECHO
чтобы напечатать что-то, но независимо от команды, она никогда не переходит к этой строке, а возвращается в SQL-приглашение.
Комментарии:
1.
echo exit|sql username/password@host:port:SID @C:scriptsstatement.sql
?2. отредактируйте свой statement.sql и сделайте так, чтобы последняя строка была: exit;
3. Последняя строка инструкции sql — это «exit;», и она по-прежнему останавливается перед командой exit в пакетном файле и возвращается к командной строке SQL>. Сценарий sql приведен ниже: set sqlformat csv; set heading on; set feedback off; spool «C:outputfile.csv «; выберите *…; выкл.; выход;
Ответ №1:
Измените свой SQL-файл, чтобы добавить выход в конце, например, так.
set feedback off
set head off
set sqlformat csv
spool emp.csv
select * from emp;
exit
Запускайте как обычно
$ sql klrice/klrice @spool
результирующий файл представляет собой csv, как и ожидалось.
$ more emp.csv
7369,"SMITH","CLERK",7902,17-DEC-80,800,,20,5555555555554444
7499,"ALLEN","SALESMAN",7698,20-FEB-81,1600,300,30,4929043445510803
7521,"WARD","SALESMAN",7698,22-FEB-81,1250,500,30,6011823599867990
7566,"JONES","MANAGER",7839,02-APR-81,2975,,20,375055626849864
7654,"MARTIN","SALESMAN",7698,28-SEP-81,1250,1400,30,4929727676353442
7698,"BLAKE","MANAGER",7839,01-MAY-81,2850,,30,5262511577814781
7782,"CLARK","MANAGER",7839,09-JUN-81,2450,,10,6011983140249807
7788,"SCOTT","ANALYST",7566,09-DEC-82,3000,,20,343764091280047
7839,"KING","PRESIDENT",,17-NOV-81,5000,,10,5186144047197497
7844,"TURNER","SALESMAN",7698,08-SEP-81,1500,0,30,6011331487563093
7876,"ADAMS","CLERK",7788,12-JAN-83,1100,,20,378775397941460
7900,"JAMES","CLERK",7698,03-DEC-81,950,,30,4916225758678451
7902,"FORD","ANALYST",7566,03-DEC-81,3000,,20,378355660338882
7934,"MILLER","CLERK",7782,23-JAN-82,1300,,10,34567
$
Ответ №2:
Интересная проблема была причиной этой проблемы.
В исходном файле SQL, который я экспортировал из SQL Developer, я не включил «exit» в конце. Я открыл его в блокноте и добавил «выход». Каждый раз, когда я просматривал файл SQL, я открывал его в Блокноте, и там было «exit».
Я только что открыл SQL-файл в Notepad , и «выхода» там НЕ было. Я добавил его, и теперь пакетный файл работает нормально.
Я понятия не имею, почему возникает эта проблема.