Oracle
 sql >> Database >  >> RDS >> Oracle

È necessario eseguire una query sql su due DB Oracle nello script della shell alla volta ed esportare i dati in file CSV separati

Una determinata sessione sqlplus può connettersi solo a un db alla volta, quindi il tuo requisito "allo stesso tempo" è essenzialmente un non-starter. Se 'allo stesso tempo' significa davvero 'in sequenza, nello stesso script, allora sei tornato a correggere la tua stringa di connessione. E poi "hai più errori di una prima partita dei Mets" (con scuse a tutti i fan dei NY Mets).

Innanzitutto, il tuo script indica che il tuo comando sqlplus è il primo vero comando dopo la specifica del tuo processore shell e 'set -x'. Eppure fai un uso massiccio delle variabili di ambiente come sostituzioni di nome utente, password e nome della connessione, senza mai impostare tali variabili.

In secondo luogo, l'uso di una "&" nella riga di comando è totalmente confuso sia per me che per il parser.

Terzo, devi far precedere il tuo riferimento allo script sql con '@'.

In quarto luogo, l'ordine degli elementi nella riga di comando è del tutto sbagliato.

Prova questo

#!/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