2009-09-23 31 views
13

Tengo algunas secuencias de comandos SQL que estoy tratando de automatizar. En el pasado, he usado SQL * Plus y llamé al binario sqlplus manualmente desde un script bash.¿Cómo ejecutas SQL desde un script bash?

Sin embargo, estoy tratando de averiguar si hay una forma de conectarme a la base de datos y llamar la secuencia de comandos desde dentro del script bash ... para poder insertar date y hacer que las consultas se ejecuten en relación con una cierto número de días en el pasado.

Respuesta

19

Estoy un poco confundido. Debería poder llamar a sqlplus desde el script bash. Esto puede ser lo que estaba haciendo con su primera declaración

intente ejecutar lo siguiente dentro de la secuencia de comandos bash:

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

Si usted quiere ser capaz de pasar los datos en las secuencias de comandos que puede hacerlo a través de SQLPlus por el paso de argumentos en el guión:

Contenido del archivo -con-sql-1.SQL

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

Entonces ch ange la escritura del golpe para llamar sqlplus que pasa en el valor

#!/bin/bash 

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

Como Bash no han incorporado en la conectividad de base de datos SQL ... tendrá que utilizar algún tipo de herramienta de terceros.

+6

sqlplus _es_ que "herramienta de terceros" – michael

-3

Aquí es una forma sencilla de ejecutar consultas de MySQL en el Bash

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

El PO está utilizando Oracle. –

+0

Esto no es un oráculo. –

0

Tal vez usted pueda consulta SQL tubería a sqlplus. Funciona para MySQL:

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

También puede utilizar un "aquí el documento" para hacer la misma cosa:

VARIABLE=SOMEVALUE 

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