sql >> Databáze >  >> RDS >> Oracle

Potřebuje spustit jeden dotaz SQL proti dvěma Oracle DB ve skriptu shell najednou a exportovat data do samostatných souborů csv

Daná relace sqlplus se může najednou připojit pouze k jedné db, takže váš požadavek „současně“ je v podstatě nezačáteční. Pokud „současně“ skutečně znamená „postupně, ve stejném skriptu, pak jste zpět k opravě spojovacího řetězce. A navíc „máte více chyb než první hra Mets“ (s omluvou všem fanouškům NY Mets).

Za prvé, váš skript naznačuje, že váš příkaz sqlplus je úplně první skutečný příkaz po specifikaci vašeho shell procesoru a 'set -x'. Přesto hojně využíváte proměnné prostředí jako náhrady za uživatelské jméno, heslo a název připojení – aniž byste tyto proměnné kdy nastavovali.

Za druhé, vaše použití '&' v příkazovém řádku je naprosto matoucí jak pro mě, tak pro analyzátor.

Za třetí, musíte před odkazem na skript SQL uvést '@'.

Za čtvrté, vaše pořadí prvků v příkazovém řádku je špatně.

Zkuste toto

#!/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. Kdy použít TEXT v mysql místo VARCHAR

  2. Kontrola zálohování serveru SQL

  3. MySQL zřetězí hodnoty z jedné tabulky do záznamu jiné

  4. SQL - Odebrat závorku z telefonního čísla