wake-up-neo.com

sqlplus-Anweisung von der Befehlszeile

Kann man so etwas machen?

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

Ich weiß, ich kann select 1 from dual in einer Datei und mache das:
$ sqlplus -s user/pass @myFile.sql

aber ich frage mich, ob es tatsächlich notwendig ist, eine Datei zu erstellen, nur um sqlplus zufrieden zu stellen

46
andersonbd1

Beachten Sie jedoch, dass Ihr Benutzername/Passwort unter Unix/Linux von jedem gesehen werden kann, der den Befehl "ps -ef" ausführen kann, wenn Sie ihn direkt in die Befehlszeile eingeben. Könnte ein großes Sicherheitsproblem sein (oder sich in ein großes Sicherheitsproblem verwandeln).

Normalerweise empfehle ich, eine Datei zu erstellen oder dieses Dokument zu verwenden, um zu verhindern, dass der Benutzername/das Kennwort unter Unix/Linux mit dem Befehl "ps -ef" angezeigt wird. Wenn der Benutzername/das Kennwort in einer Skriptdatei oder einer SQL-Datei enthalten ist, können Sie sie mit den entsprechenden Benutzer-/Gruppenleseberechtigungen schützen. Dann können Sie den Benutzer/pass in der Datei wie folgt in einem Shell-Skript belassen:

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

Ich kann Ihre genaue Abfrage ausführen, indem ich nur darauf achte, dass am Ende meiner select-Anweisung ein Semikolon steht. (Ausgabe ist aktuell, Verbindungsparameter entfernt.)

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

Ausgabe:

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

Beachten Sie, dass dies von Bedeutung sein sollte, dies jedoch unter Mac OS X Snow Leopard und Oracle 11g ausgeführt wird.

31
Grant Lammi

Meine Version

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


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

BEARBEITEN:

Für mehrzeilige können Sie dies verwenden

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


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


         2
----------
         2
24
rofrol

Ich nehme an das ist * nix?

Verwenden Sie "hier Dokument":

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

EDIT: Ich hätte dein zweites Beispiel versuchen sollen. Es funktioniert auch (auch unter Windows ohne Ticks):

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

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


$
8
DCookie