Запустите Oracle SQL-скрипт и выйдите из sqlplus.exe через командную строку

Я хотел бы запустить скрипт Oracle через SQL Plus с помощью командной строки Windows. Сценарий не содержит команду «exit», но мне все равно хотелось бы, чтобы SQL Plus завершил работу, возвращая управление командной строке при завершении сценария. Моя цель - сделать это без , изменяя скрипт. Возможно ли это?

98 голосов | спросил JoshL 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 03:33:09 +0400 2008, 03:33:09

10 ответов


125

Другой способ - использовать эту команду в пакетном файле:

echo exit | sqlplus user/[email protected] @scriptname
ответил Dave Costa 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 16:28:51 +0400 2008, 16:28:51
12

Я нашел, что это лучшее решение и работает в терминале или внутри скрипта:

echo @scriptname | sqlplus username/[email protected]
ответил user142847 26 +04002012-10-26T16:21:03+04:00312012bEurope/MoscowFri, 26 Oct 2012 16:21:03 +0400 2012, 16:21:03
12

Лучший способ скрыть информацию пользователя и выходы:

exit | sqlplus -S user/[email protected] @script.sql

exit предоставляется на выход sqlplus, заставляя его выйти. -S добавляет все выходные данные сервера, кроме SQL-запроса в скрипте.

ответил girish 19 MaramMon, 19 Mar 2012 01:20:01 +04002012-03-19T01:20:01+04:0001 2012, 01:20:01
11

Понимая теперь, что ваша проблема может быть с самим файлом sql, поймите, что sqlplus нужно будет сказать, чтобы выйти. Способ, которым я это делаю:

выберите * from dual;

уволиться;
/

(Черта важна. Она сообщает sqlplus выполнить надпись statemet (s) над ней.)

ответил Chris Noe 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 20:04:00 +0400 2008, 20:04:00
6

Вы также можете сделать это в своем сценарии оболочки.

sqlplus /nolog <<EOF
connect user/pass
@run_some_file.sql
select * from dual;
EOF

Возможно, вам нужно будет уйти от ";" с \.

ответил Ethan Post 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 16:33:44 +0400 2008, 16:33:44
4

Вот так:

sqlplus /nolog userid /password @ tnsname @filename

Если вы поместите это в пакетный файл, управление будет продолжено с последующими инструкциями.

ИЗМЕНИТЬ: Мое плохое, повторите попытку с флагом /nolog

ответил Chris Noe 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 03:43:47 +0400 2008, 03:43:47
3

Да, возможно - сгенерируйте сценарий оболочки, который соответствующим образом настроит SQLPlus, включает ваш скрипт (т. е. @YourTargetScript.sql), а затем выполняет выход.

Тем не менее, я не рекомендую этот подход вообще - SQLPlus имеет очень много исправлений для программного использования; при написании сценариев оболочки в прошлом, которые использовали Oracle, я построил вокруг него оболочку Python (добавив более разумное поведение обработки ошибок, разумное разделение вывода между stdout /stderr, встроенной поддержкой вывода CSV и другими подобными лакомствами), и это сработало намного лучше.

ответил Charles Duffy 23 rdEurope/Moscowp30Europe/Moscow09bEurope/MoscowTue, 23 Sep 2008 03:40:53 +0400 2008, 03:40:53
1

Для тех, кто обеспокоен безопасностью включения вашего пароля в сценарий, у AskTom есть статья о «идентифицированном извне», http://asktom.oracle.com/pls/apex/f?p=100:11:09P11_QUESTION_ID: 142212348066

ответил user128494 16 J000000Monday12 2012, 23:38:31
0

В вашем SQL Script добавьте EXIT. Вот пример мой файл test.bat имеет следующие значения:

sqlplus user /pwd @ server @ test.SQL> myLOG.LOG

В моем файле test.sql есть следующее: выберите * from dual; Выход

ответил 20 J0000006Europe/Moscow 2009, 00:40:10
0

выход | SQLPLUS /@ @

Это правильное решение, я попробовал его работу

ответил 20 62010vEurope/Moscow11bEurope/MoscowSat, 20 Nov 2010 09:57:09 +0300 2010, 09:57:09

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132