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

时间:2011-08-03 08:15:05

标签: java sql oracle jdbc

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

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

sql ant task / maven sql插件无法处理不同的终结符或EXEC命令。

如果不运行sqlplus,你知道有什么好办法吗?

2 个答案:

答案 0 :(得分:2)

我们遇到了同样的问题...简而言之,没有现成的解决方案:如果您打开AntMaven来源,您会发现他们使用的是简单的基于regexp的脚本分割器,适用于简单的脚本,但通常会失败,例如存储过程。

确实存在用于PL / SQL的ANTLR解析器,例如Alexandre Porcelli's one - 这些解析器非常接近,但仍未准备好用作插入式解决方案。

我们最终写了yet another ad hoc splitter,它知道一些sqlplus命令,如/EXIT - 它仍然很难看,但适用于我们的大多数脚本。

答案 1 :(得分:1)

我可以想到两个选择。一个你不想要的 - 将Runtime.exec()改为sqlplus。另一种是读取文件,删除行斜线末尾并在分号时发送到JDBC。或者在发生这种情况时添加到批处理以减少到数据库的访问。