2017-01-05 23 views
0

私のJavaプログラムにCSVファイルを読み込んでおり、そのすべてのレコードにSQLクエリがあります。私はこの(選択)SQLクエリを解析して、これらのクエリで言及されているテーブル名とカラム名を探したいと思います。SQLクエリからテーブル名とカラム名を取得するString

年齢を選択し、従業員

から名前

結果:

----テーブル:[従業員]

----列:[年齢、名前]

注:クエリを実行したくない場合は、ResultSetMetaDataを使用しています。

+0

最も一般的な形式では、これは悪夢です。 PIVOT句またはMATCH_RECOGNIZE句で作成された列の選択を想像してみましょう...列を含む式(分析関数、集計、col1 + col2)...これは何のために必要ですか? – mathguy

+0

JSqlParserを試すことができます:https://github.com/JSQLParser/JSqlParser – diufanman

+0

利用可能なoracle sqlパーサー、tokenize入力を使用して、パーサライブラリを使用して目的の結果を取得する必要があります。このスレッドがあなたに役立つかどうかを確認するhttp://stackoverflow.com/questions/5735791/parser-for-oracle-sql –

答えて

0

上の例のような単純なSQL文では、情報を取得するための単純な文字列メソッドを使用します。例:

public static void main (String[]args) { 
    String sql = "Select age,name,adress,id from Employee where id = 3"; 
    String[] columns = sql.substring(sql.indexOf("Select")+7, sql.indexOf("from")-1).split(","); 
    String table = sql.substring(sql.indexOf("from")+5).split(" ")[0]; 
    System.out.println(Arrays.toString(columns)); 
    System.out.println(table); 
} 
関連する問題