我已經得到了包含sqlplus特定腳本的sql文件:它包含/或;作爲語句終止符,EXEC執行存儲過程等。從java運行sqlplus腳本的簡單方法
我需要從java(jdbc)執行這個腳本,而不需要sqlplus。
sql ant任務/ maven sql插件無法處理不同的終止符或EXEC命令。
你知道有沒有運行sqlplus的好方法嗎?
我已經得到了包含sqlplus特定腳本的sql文件:它包含/或;作爲語句終止符,EXEC執行存儲過程等。從java運行sqlplus腳本的簡單方法
我需要從java(jdbc)執行這個腳本,而不需要sqlplus。
sql ant任務/ maven sql插件無法處理不同的終止符或EXEC命令。
你知道有沒有運行sqlplus的好方法嗎?
我們遇到了同樣的問題......簡而言之,目前還沒有現成的解決方案:如果您打開Ant或Maven來源,您會看到他們正在使用一個簡單的基於正則表達式的腳本拆分器,它是對於簡單的腳本很好,但通常在例如存儲過程。
確實有用於PL/SQL的ANTLR解析器,例如Alexandre Porcelli's one - 這些解析器非常接近,但仍未準備好用作插入式解決方案。
我們最終編寫了yet another ad hoc splitter,它知道一些sqlplus命令,如/
和EXIT
- 它仍然很醜,但適用於大多數腳本。
我能想到兩個選擇。一個你不想要的 - 將Runtime.exec()傳遞給sqlplus。另一種方法是讀取文件,刪除行斜槓的末尾,並在您輸入分號時發送到JDBC。或者在發生這種情況時減少對數據庫的訪問。
這正是我想要做的,但我需要一個很好的SQLPLUS式解析器,它將整個文件分割成更小的部分。通過/或簡單拆分;字符將無法工作 –