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

køre oracle sql script fra java

Havde det samme problem for ikke så længe siden, stødte ind i dit spørgsmål flere gange, mens jeg googlede efter en løsning, så jeg synes, jeg skylder dig – her er mine resultater indtil videre:

Kort sagt er der ingen færdige løsninger til det:hvis du åbner Ant eller Maven kilder, vil du se, at de bruger en simpel regexp-baseret scriptsplitter, som er fin til simple scripts, men som regel fejler på f.eks. lagrede procedurer. Samme historie med iBATIS, c5 db-migreringer osv.

Problemet er, at der er mere end ét sprog involveret:For at kunne køre "SQL-scripts" skal man være i stand til at håndtere (1) SQL-, (2) PL/SQL- og (3) sqlplus-kommandoer.

Kører sqlplus i sig selv er måden, men det skaber konfigurationsrod, så vi forsøgte at undgå denne mulighed.

Der er ANTLR-parsere til PL/SQL, såsom Alexandre Porcellis ene —de er meget tætte, men ingen har udarbejdet en komplet drop-in-løsning baseret på dem hidtil.

Vi endte med at skrive endnu en ad hoc-splitter som er opmærksom på nogle sqlplus-kommandoer som / og EXIT — det er stadig grimt, men fungerer til de fleste af vores manuskripter. (Bemærk dog nogle scripts, f.eks. med efterfølgende -- kommentarer, virker ikke – det er stadig en klud, ikke en løsning.)



  1. DefType Statements i VBA:The Dark Side of Backward Compatibility

  2. Hvordan kan jeg helt afinstallere oracle 11g?

  3. Skal jeg oprette en ny tabel i min database til dette?

  4. Brug af Jenkins med Kubernetes AWS, del 3