SQL ステートメントを解析し、列名とテーブル名を取得する必要があります。サンプルコードで試してみました。テーブル名を取得しましたが、各テーブルの列名を取得するのに苦労しています。
5 に答える
本当にこれを行う必要がある場合は、ANTLRのような適切なパーサー ツールキットの使用を検討する必要があります。これは非常に急な学習曲線ですが、他の人が既に構築した SQL の文法があります。
独自のパーサーを手動でクランクアップすると、最も基本的なクエリ以外のバグの混乱が発生します。
必要なのは SQL パーサーです。
JSQLParserまたはZQLを試すことができます。
あなたがやろうとしているのと同じことのために、私は両方をうまく使いました。
sqlparserも試すことができます。ただし、これは商用であり、使用した経験はありません。
オブジェクトを持っている場合は、起動されたクエリResultSet
を読み取ることができます。Column names and Table Names
to を使用ResultSetMetaData
しget MetaData
てquery
(テーブル名や列名など)。
Checkout Foundation パーサーhttp://foundationdb.github.io/sql-parser/
また、JSQLParser は SourceForge にはありませんが、https://github.com/JSQLParser/JSqlParser/wikiで維持されていることに注意してください。
SQL 文法用のパーサーを作成する必要があります。ANTLR ではこのようなパーサーを作成できますが、文法を作成するのは非常に難しい場合があります。
ANTLR の既存の文法のリストは次のとおりですhttp://www.antlr3.org/grammar/list.html
これには、mysql、oracle SQL の文法が含まれています。