我正在尋找一個C/C++ SQL解析庫,它能夠向我提供查詢依賴的表的名稱。SQL解析器庫 - 從查詢中獲取表名
我想到:
SELECT * FROM TABLEA NATURAL JOIN TABLEB
結果:TABLEA,TABLEB
當然提供的示例是簡單的極端。我已經編寫了自己的解析器(基於Boost.Spirit),它處理SQL語法的一個子集,但我需要的是能夠處理複雜(遞歸等)查詢的解析器。
你知道這個目的有用嗎?
我發現的是http://www.sqlparser.com - 這是商業,但確實是我所需要的。 我也挖掘了PostgreSQL的資源,沒有任何效果。
對不起,因爲變得不合時宜,但是......爲什麼? – vines 2013-02-21 13:17:19
你可以使用lexxer和yaccer的組合來做到這一點,我知道你可以在網上找到完整的語法定義,但它們並不是最新的......無論如何,我也搜索了很多東西,可以做到這一點,並結束編寫我自己的解析器,實際上可以跳過未定義的語法部分,但仍然很難使其處理複雜的查詢... – ppetrov 2013-02-21 13:20:19
@vines - 我正在寫一箇中間件庫,它透明地緩存查詢結果在Memcached,Redis或本地RAM中(取決於配置)。目前這只是一個學術研究,不管它是否合理。我用SOCI庫(http://soci.sourceforge.net/,我已經實現了我自己的後端)進行了測試。也許我會實現一些JDBCv2驅動程序。 – bartull 2013-02-21 13:29:36