从java运行sqlplus脚本的简单方法

从java运行sqlplus脚本的简单方法,java,sql,oracle,jdbc,Java,Sql,Oracle,Jdbc,我有一个包含sqlplus特定脚本的sql文件:它包括/或;作为语句终止符,EXEC执行存储过程等 我需要从java(jdbc)执行这个脚本,而不需要sqlplus sql ant任务/maven sql插件无法处理不同的终止符或EXEC命令 您知道没有运行sqlplus的好方法吗?我可以想出两种选择。一个你不想要的,就是把Runtime.exec()转换成sqlplus。另一种方法是读取文件,删除行尾斜杠,并在遇到分号时发送给JDBC。或者在发生这种情况时添加到批处理以减少对数据库的访问。我们

我有一个包含sqlplus特定脚本的sql文件:它包括/或;作为语句终止符,EXEC执行存储过程等

我需要从java(jdbc)执行这个脚本,而不需要sqlplus

sql ant任务/maven sql插件无法处理不同的终止符或EXEC命令


您知道没有运行sqlplus的好方法吗?

我可以想出两种选择。一个你不想要的,就是把Runtime.exec()转换成sqlplus。另一种方法是读取文件,删除行尾斜杠,并在遇到分号时发送给JDBC。或者在发生这种情况时添加到批处理以减少对数据库的访问。

我们遇到了相同的问题。。。简言之,没有现成的解决方案:如果您打开或打开源代码,您将看到它们使用的是一个简单的基于regexp的脚本拆分器,这对于简单脚本来说很好,但通常在存储过程等方面失败

确实有一些用于PL/SQL的ANTLR解析器,例如-它们非常接近,但还没有准备好作为一个插入式解决方案使用


我们最后写了一些sqlplus命令,比如
/
EXIT
——这仍然很难看,但对我们的大多数脚本都有效。

这正是我想要做的,但我需要一个好的类似sqlplus的解析器,它可以将整个文件分割成更小的部分。按/或简单拆分;chars对于您的临时拆分器不会起作用!