sql >> Database >  >> RDS >> Oracle

Moet één sql-query uitvoeren op twee Oracle DB's in shellscript tegelijk en de gegevens exporteren naar afzonderlijke csv-bestanden

Een bepaalde sqlplus-sessie kan slechts verbinding maken met één db tegelijk, dus uw vereiste 'tegelijkertijd' is in wezen een niet-starter. Als 'tegelijkertijd' echt betekent 'opeenvolgend, in hetzelfde script, dan ben je weer bezig met het repareren van je connect string. En daarbij heb je 'meer fouten dan een vroege Mets-game' (met excuses aan eventuele NY Mets-fans).

Ten eerste geeft je script aan dat je sqlplus-opdracht de allereerste echte opdracht is die volgt op de specificatie van je shell-processor en 'set -x'. Toch maak je intensief gebruik van omgevingsvariabelen als vervanging voor gebruikersnaam, wachtwoord en verbindingsnaam - zonder ooit die variabelen in te stellen.

Ten tweede is het gebruik van een '&' in de opdrachtregel zowel voor mij als voor de parser totaal verwarrend.

Ten derde moet u uw verwijzing naar het sql-script vooraf laten gaan met '@'.

Ten vierde is je volgorde van elementen in de opdrachtregel helemaal verkeerd.

Probeer dit

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


  1. Inleiding tot OPENJSON met voorbeelden (SQL Server)

  2. Voordelen van het gebruik van Microsoft Access-sjablonen

  3. Fout bij het installeren van mysql2 gem ( windows 8)

  4. MySQL groeperen op met 2 kolommen wanneer waarden in kolommen worden verwisseld