我有包含 sqlplus 特定脚本的 sql 文件:它包括 / 或 ;作为语句终止符、执行存储过程的 EXEC 等。
我需要从 java (jdbc) 执行此脚本,而不需要 sqlplus。
sql ant任务/maven sql插件无法处理不同的终止符或EXEC命令。
您知道在不运行 sqlplus 的情况下有什么好方法吗?
我们遇到了同样的问题...简而言之,没有现成的解决方案:如果您打开Ant http://java2s.com/Open-Source/Java-Document-2/Database/solidbase/solidbase/core/SQLSource.java.htm or Maven http://svn.codehaus.org/mojo/tags/sql-maven-plugin-1.5/src/main/java/org/codehaus/mojo/sql/SqlSplitter.java来源,你会看到他们使用一个简单的基于正则表达式的脚本分割器,这对于简单的脚本来说很好,但通常会失败,例如存储过程。
确实有针对 PL/SQL 的 ANTLR 解析器,例如亚历山大·波尔切利的一个 https://github.com/porcelli/plsql-parser——这些非常接近,但仍然没有准备好用作直接解决方案。
我们最终写了另一个临时分配器 https://github.com/gxa/gxa/blob/9b93279d2ecda588c517dbe9dfc9f1546f4ad25a/atlas-updates/src/main/java/uk/ac/ebi/gxa/db/OracleScriptSplitter.java它知道一些 sqlplus 命令,例如/
and EXIT
——它仍然很丑陋,但适用于我们的大多数脚本。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)