2011-08-03 75 views
5

sqlplus固有のスクリプトを含むsqlファイルがあります。ステートメント終了記号、ストアドプロシージャを実行するEXECなどJavaからsqlplusスクリプトを実行する簡単な方法

このスクリプトは、sqlplusを必要とせずにjava(jdbc)から実行する必要があります。

sql ant task/maven sqlプラグインは、異なるターミネータまたはEXECコマンドを処理できません。

sqlplusを実行しないで実行する良い方法はありますか?

答えて

2

私たちは同じ問題にぶつかりました...簡潔に言えば、それに対応する解決策はありません:AntまたはMavenソースを開くと、それらは単純な正規表現ベースのスクリプトスプリッタを使用しています。単純なスクリプトでは問題ありませんが、通常は失敗します。ストアドプロシージャ。

実際にPL/SQL用のANTLRパーサーがあります(例えば、Alexandre Porcelli's one)。これは非常に近いですが、まだドロップイン・ソリューションとして使用する準備ができていません。それはまだ醜いですが、私たちのスクリプトのほとんどのために働く -

は、我々は/EXITのようないくつかのSQLPLUSコマンドを認識しているyet another ad hoc splitterを書くことになりました。

1

私は2つのオプションが考えられます。あなたは、Runtime.exec()を使ってsqlplusにしたくないのです。もう1つは、セミコロンを押したときにファイルを読み込んで、行末のスラッシュを削除し、JDBCに送信することです。それが起こったときにバッチに追加することで、データベースへのトリップを減らすことができます。

+0

これはまさに私がやろうとしていることですが、ファイル全体を小さな部分に分割する優れたSQLPLUSのようなパーサーが必要です。 /またはで簡単に分割。文字は機能しません –

関連する問題