2009-09-23 9 views
13

Mam kilka skryptów SQL, które próbuję zautomatyzować. W przeszłości użyłem SQL * Plus i ręcznie wywołałem plik binarny sqlplus ze skryptu bash.Jak wykonać SQL z poziomu skryptu Bash?

Jednak staram się dowiedzieć, czy istnieje sposób na połączenie z bazą danych i wywołanie skryptu z wnętrza skryptu Bash ... tak, że mogę wstawić date i sprawić, aby zapytania były wykonywane względem pewna liczba dni w przeszłości.

Odpowiedz

19

Jestem lekko zdezorientowany. Powinieneś być w stanie wywołać sqlplus z poziomu skryptu bash. To może być to, co robisz ze swoim pierwszym oświadczeniu

Try wykonując następujące wewnątrz skryptu bash:

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

Jeśli chcesz, aby móc przekazać dane do skryptów można to zrobić poprzez SQLPLUS przez przekazując argumenty do skryptu:

Zawartość file-with-sQL-1.sql

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

Następnie ch Ange skrypt bash aby zadzwonić SQLPLUS przekazując wartości

#!/bin/bash 

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

Jak Bash nie ma wbudowanego w połączeniach z bazą danych SQL ... trzeba będzie użyć jakiegoś narzędzia firm trzecich.

+6

SQLPLUS _jest_ że „narzędzie strona trzecia” – michael

-3

Oto prosty sposób prowadzenia kwerend MySQL w powłoki bash

mysql -u [database_username] -p [database_password] -D [database_name] -e "SELECT * FROM [table_name]" 
+3

PO używa Oracle. –

+0

To nie jest wyrocznia. –

0

może można kwerendy SQL rura do sqlplus. Działa na MySQL:

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

Można też użyć „tutaj dokument”, aby zrobić to samo:

VARIABLE=SOMEVALUE 

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