Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Precisa executar uma consulta sql em dois bancos de dados Oracle no script de shell por vez e exportar os dados para arquivos csv separados


Uma determinada sessão sqlplus só pode se conectar a um banco de dados por vez, portanto, seu requisito 'ao mesmo tempo' é essencialmente um não inicial. Se 'ao mesmo tempo' realmente significa 'sequencialmente, no mesmo script, então você está de volta para corrigir sua string de conexão. E com isso você 'tem mais erros do que um jogo antigo do Mets' (com desculpas a qualquer fã do NY Mets).

Primeiro, seu script indica que seu comando sqlplus é o primeiro comando real após a especificação do seu processador shell e 'set -x'. No entanto, você faz uso pesado de variáveis ​​de ambiente como substituições de nome de usuário, senha e nome de conexão - sem nunca definir essas variáveis.

Segundo, seu uso de um '&' na linha de comando é totalmente confuso para mim e para o analisador.

Terceiro, você precisa preceder sua referência ao script sql com '@'.

Quarto, sua ordem de elementos na linha de comando está errada.

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