Oracle
 sql >> Base de données >  >> RDS >> Oracle

Nécessite d'exécuter une requête sql sur deux bases de données Oracle dans un script shell à la fois et d'exporter les données vers des fichiers csv séparés

Une session sqlplus donnée ne peut se connecter qu'à une seule base de données à la fois, donc votre exigence "en même temps" est essentiellement un non-démarreur. Si 'en même temps' signifie vraiment 'séquentiellement, dans le même script, alors vous êtes de retour pour corriger votre chaîne de connexion. Et à cela, vous "avez plus d'erreurs qu'un premier match des Mets" (avec mes excuses à tous les fans des NY Mets).

Tout d'abord, votre script indique que votre commande sqlplus est la toute première commande réelle suivant la spécification de votre processeur shell et 'set -x'. Pourtant, vous faites un usage intensif des variables d'environnement pour remplacer le nom d'utilisateur, le mot de passe et le nom de connexion, sans jamais définir ces variables.

Deuxièmement, votre utilisation d'un '&' dans la ligne de commande est totalement déroutante pour moi et pour l'analyseur.

Troisièmement, vous devez faire précéder votre référence au script sql par '@'.

Quatrièmement, votre ordre des éléments dans la ligne de commande est erroné.

Essayez ceci

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