Простой способ запустить скрипт sqlplus из Java - PullRequest
5 голосов
/ 03 августа 2011

У меня есть файл sql, содержащий скрипт, специфичный для sqlplus: он включает / или; как операторы завершения, EXEC для выполнения хранимых процедур и т. д.

Мне нужно выполнить этот скрипт из Java (JDBC) без необходимости sqlplus.

Плагин sql ant task / maven sql не может обрабатывать различные терминаторы или команды EXEC.

Знаете ли вы какой-нибудь хороший способ сделать это без запуска sqlplus?

Ответы [ 2 ]

2 голосов
/ 19 октября 2011

Мы столкнулись с той же проблемой ... Короче говоря, нет готовых решений для этого: если вы откроете Ant или Maven источники, вы увидите, что они используют простой разделитель сценариев на основе регулярных выражений, который подходит для простых сценариев, но обычно не работает, например: хранимые процедуры.

Действительно, есть синтаксические анализаторы ANTLR для PL / SQL, такие как Один от Александра Порчелли - они очень близки, но все еще не готовы к использованию в качестве выпадающего решения.

Мы закончили тем, что написали еще один специальный сплиттер , который знает о некоторых командах sqlplus, таких как / и EXIT - это все еще уродливо, но работает для большинства наших скриптов.

1 голос
/ 04 августа 2011

Я могу придумать два варианта. Один, который вы не хотите - Runtime.exec () его в sqlplus. Другой способ - прочитать файл, удаляя косые черты в конце строки и отправляя его в JDBC, когда вы вводите точку с запятой. Или добавление в пакет, когда это происходит, чтобы уменьшить количество обращений к базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...