wake-up-neo.net

Wie führt man SQL aus einem Bash-Skript heraus aus?

Ich habe einige SQL-Skripte, die ich zu automatisieren versuche. In der Vergangenheit habe ich SQL * Plus verwendet und die sqlplus-Binärdatei manuell aus einem Bash-Skript aufgerufen.

Ich versuche jedoch herauszufinden, ob es eine Möglichkeit gibt, eine Verbindung zur Datenbank herzustellen und das Skript aus dem Bash-Skript heraus aufzurufen, damit ich date einfügen und die Abfragen relativ zu einer bestimmten Anzahl von Tagen ausführen kann in der Vergangenheit.

13
Aaron

Ich bin etwas verwirrt. Sie sollten sqlplus aus dem Bash-Skript heraus aufrufen können. Dies könnte das sein, was Sie mit Ihrer ersten Aussage gemacht haben

Versuchen Sie Folgendes in Ihrem Bash-Skript auszuführen:

#!/bin/bash          
echo Start Executing SQL commands
sqlplus <user>/<password> @file-with-sql-1.sql
sqlplus <user>/<password> @file-with-sql-2.sql

Wenn Sie Daten in Ihre Skripts übergeben möchten, können Sie dies über SQLPlus tun, indem Sie Argumente an das Skript übergeben:

Inhalt von file-with-sql-1.sql

 select * from users where username='&1';

Ändern Sie dann das Bash-Skript, um sqlplus aufzurufen, indem Sie den Wert übergeben

#!/bin/bash

MY_USER=bob
sqlplus <user>/<password> @file-with-sql-1.sql $MY_USER
19
RC.

Sie können auch ein "Here-Dokument" verwenden, um dasselbe zu tun:

VARIABLE=SOMEVALUE

sqlplus connectioninfo << HERE
start file1.sql
start file2.sql $VARIABLE
quit
HERE
8
xdhmoore

Möglicherweise können Sie die SQL-Abfrage an sqlplus übergeben. Es funktioniert für MySQL:

echo "SELECT * FROM table" | mysql --user=username database
1
danadam

Ich habe das jdbcsql-Projekt auf Sourceforge verwendet.

Auf * nix-Systemen erstellt dies einen csv-Stream mit Ergebnissen, der standardisiert wird:

Java -Djava.security.egd=file///dev/urandom -jar jdbcsql.jar -d oracledb_SID -h $Host -p 1521 -U some_username -m Oracle -P "$PW" -f Excel -s "," "$1"

Beachten Sie, dass das Hinzufügen von -Djava.security.egd=file///dev/urandom die Leistung erheblich erhöht

Windows-Befehle sind ähnlich: siehe http://jdbcsql.sourceforge.net/

0
Rondo