2011-08-03 21 views
5

我已經得到了包含sqlplus特定腳本的sql文件:它包含/或;作爲語句終止符,EXEC執行存儲過程等。從java運行sqlplus腳本的簡單方法

我需要從java(jdbc)執行這個腳本,而不需要sqlplus。

sql ant任務/ maven sql插件無法處理不同的終止符或EXEC命令。

你知道有沒有運行sqlplus的好方法嗎?

回答

2

我們遇到了同樣的問題......簡而言之,目前還沒有現成的解決方案:如果您打開AntMaven來源,您會看到他們正在使用一個簡單的基於正則表達式的腳本拆分器,它是對於簡單的腳本很好,但通常在例如存儲過程。

確實有用於PL/SQL的ANTLR解析器,例如Alexandre Porcelli's one - 這些解析器非常接近,但仍未準備好用作插入式解決方案。

我們最終編寫了yet another ad hoc splitter,它知道一些sqlplus命令,如/EXIT - 它仍然很醜,但適用於大多數腳本。

1

我能想到兩個選擇。一個你不想要的 - 將Runtime.exec()傳遞給sqlplus。另一種方法是讀取文件,刪除行斜槓的末尾,並在您輸入分號時發送到JDBC。或者在發生這種情況時減少對數據庫的訪問。

+0

這正是我想要做的,但我需要一個很好的SQLPLUS式解析器,它將整個文件分割成更小的部分。通過/或簡單拆分;字符將無法工作 –