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

esegui lo script Oracle SQL da java

Ho avuto lo stesso problema non molto tempo fa, mi sono imbattuto nella tua domanda diverse volte mentre cercavo una soluzione su Google, quindi penso di esserti debitore:ecco le mie scoperte finora:

In breve, non ci sono soluzioni pronte per questo:se apri Ant o Maestro sorgenti, vedrai che stanno usando un semplice divisore di script basato su espressioni regolari che va bene per script semplici, ma di solito fallisce ad es. procedura di archiviazione. Stessa storia con iBATIS, migrazioni c5 db, ecc.

Il problema è che sono coinvolti più linguaggi:per eseguire "SQL Scripts" è necessario essere in grado di gestire (1) comandi SQL, (2) PL/SQL e (3) sqlplus.

Esecuzione di sqlplus di per sé è effettivamente la strada, ma crea confusione nella configurazione, quindi abbiamo cercato di evitare questa opzione.

Esistono parser ANTLR per PL/SQL, come quello di Alexander Porcelli —sono molto simili, ma nessuno ha preparato una soluzione drop-in completa basata su quelle finora.

Abbiamo finito per scrivere ancora un altro splitter ad hoc che è a conoscenza di alcuni comandi sqlplus come / e EXIT — è ancora brutto, ma funziona per la maggior parte dei nostri script. (Nota anche se alcuni script, ad esempio, con -- finali commenti, non funzionerà:è ancora un pasticcio, non una soluzione.)