sql >> Base de Datos >  >> RDS >> Oracle

Necesita ejecutar una consulta sql contra dos bases de datos Oracle en un script de shell a la vez y exportar los datos a archivos csv separados

Una sesión de sqlplus determinada solo puede conectarse a una base de datos a la vez, por lo que su requisito 'al mismo tiempo' es esencialmente un no iniciador. Si 'al mismo tiempo' realmente significa 'secuencialmente, en el mismo script, entonces ha vuelto a arreglar su cadena de conexión. Y en eso "tienes más errores que un juego temprano de los Mets" (con disculpas a los fanáticos de los NY Mets).

Primero, su secuencia de comandos indica que su comando sqlplus es el primer comando real que sigue a la especificación de su procesador de shell y 'set -x'. Sin embargo, hace un uso intensivo de las variables de entorno como sustituciones del nombre de usuario, la contraseña y el nombre de la conexión, sin siquiera establecer esas variables.

En segundo lugar, su uso de un '&' en la línea de comando es totalmente confuso tanto para mí como para el analizador.

En tercer lugar, debe preceder su referencia al script sql con '@'.

Cuarto, el orden de los elementos en la línea de comandos es incorrecto.

Prueba esto

#!/bin/bash
orauser1=<supply user name here>
orapw2=<supply password here>
oradb_1=<supply connection name of first database>
#
orauser1=<supply user name here>
orapw2=<supply password here>
oradb_1=<supply connection name of first database>
#
Targetdirectory=<supply value here>
#
sqlplus -S ${orauser1}/${orapw1}@${oradb_1} @Datesquery.sql >> ${Targetdirectory}/csvfile1.csv

sqlplus -S ${orauser2}/${orapw2}@${oradb_1} @Datesquery.sql >> ${Targetdirectory}/csvfile2.csv