sqlを構成する特定のキーワード、サブクエリ、派生テーブル、関数などの出現回数を数えることによって、sqlの複雑さレベル(単純/中程度/複雑など)を判断する必要があります。さらに、私は構文的にSQLを検証する必要があります。複雑さのレベルを判断するためにSQLを解析する
ネット上で検索したところ、PerlにはSQL::Statement
とSQL::Parser
という2つのクラスがあり、これを利用することができます。しかし、私は、これらのクラスにはいくつかの制限があることがわかりました(例えば、CASE WHEN
の構造体はサポートされていません)。
これまで述べてきたように、Lex/YaccやFlex/Bisonを使ってカスタムの簡潔なSQLパーサを構築する方が良いでしょうか?どちらのアプローチがより迅速かつ迅速でしょうか?
ご意見をお寄せください。また、誰もが同じことを議論するオンラインのリソースに私を指すことができます。
おかげ
どのデータベースですか? Microsoft SQLServerは、この種の分析を行うためのツールをカスタマイズしています。 – mob
@mob:データベースはTeradata –