Подтвердить что ты не робот

Вывод sqlplus из командной строки

Можно ли сделать что-то вроде этого?

$ sqlplus -s user/pass "select 1 from dual" или
$ echo "select 1 from dual" | sqlplus -s user/pass

Я знаю, что могу положить select 1 from dual в файл и сделать это:
$ sqlplus -s user/pass @myFile.sql

но мне интересно, действительно ли нужно создать файл, чтобы удовлетворить sqlplus

4b9b3361

Ответ 1

Просто помните, что в Unix/Linux ваше имя пользователя/пароль может быть замечено любым, кто может запускать команду "ps -ef", если вы поместите ее непосредственно в командной строке. Может быть большой проблемой безопасности (или стать большой проблемой безопасности).

Обычно я рекомендую создать файл или использовать здесь документ, чтобы вы могли защитить имя пользователя/пароль от просмотра командой "ps -ef" в Unix/Linux. Если имя пользователя/пароль содержится в файле script или sql файле, который вы можете защитить, используя соответствующие права доступа для пользователей/групп. Затем вы можете сохранить пользователя/пройти внутри файла, как это, в оболочке script:

sqlplus -s /nolog <<EOF
connect user/pass
select blah;
quit
EOF

Ответ 2

Я могу выполнить ваш точный запрос, просто убедившись, что в конце моего оператора select есть точка с запятой. (Выход действителен, параметры связи удалены.)

echo "select 1 from dual;" | sqlplus -s username/[email protected]:1521/service 

Вывод:

         1
----------
         1

Обратите внимание, что это важно, но это работает на Mac OS X Snow Leopard и Oracle 11g.

Ответ 3

Моя версия

$ sqlplus -s username/[email protected]:port/service <<< "select 1 from dual;"


         1
----------
         1

EDIT:

Для многострочной вы можете использовать этот

$ echo -e "select 1 from dual; \n select 2 from dual;" | sqlplus -s username/[email protected]:port/service


         1
----------
         1


         2
----------
         2

Ответ 4

Я предполагаю, что это * nix?

Используйте "здесь документ":

sqlplus -s user/pass <<+EOF
select 1 from dual;
+EOF

EDIT: Я должен был попробовать ваш второй пример. Он также работает (даже в Windows, без клещей):

$ echo 'select 1 from dual;'|sqlplus -s user/pw

         1
----------
         1


$

Ответ 5

Я хочу выполнить этот код командной строки из VB6, как показано ниже. Я не хочу передавать файл для выполнения команды.

Set exec1 = New SubprocessRunner
    With exec1
   .WaitUntilDone = True
   .StandardInput = "|"
   .CreationFlags = .CreationFlags Or cfCREATE_NO_WINDOW
   .StandardOutput = OutputString(propOverwriteLog) & propLogFileName
   .StandardError = "@"
   .CommandLine = "echo ALTER USER test identified by amruth88 REPLACE amruth99; | Sqlplus test/[email protected]"

   '.CommandLine = "SQLPlus.exe  test/[email protected] @" & SQLPScript1