C中的SQL解析器

时间:2009-07-18 10:33:34

标签: sql c parsing

我想在C中解析和存储SQL DML(INSERT,UPDATE,DELETE)语句的列和值。需要开源代码的URL或我可以链接我的C程序的库。该平台是SUSE Linux。试图制作和使用libSQL失败。详细的答案表示赞赏。感谢。

附加说明:请建议我可以与我的C程序链接的库/代码。在我的程序中,我想使用这个库的函数来解析和使用令牌进行进一步处理。

9 个答案:

答案 0 :(得分:10)

您可以查看SQLite的源代码。它使用名为Lemon的解析器。

链接:

  

SQLite architecture

     

Lemon parser

您还可以查看postgresql-plpython3的源代码。看起来它有一个纯粹的基于C的SQL解析器。

链接:

  

postgresql-plpython3 @ github

答案 1 :(得分:4)

我建议从真正的DBMS的真正解析器开始。自由软件中有几种。例如,PostgreSQL的解析器位于发行版的src/backend/parser目录中,并使用C和Yacc编写。

答案 2 :(得分:1)

请参阅Google图书中的“Lex& Yacc”(O'Reilly)中的“解析SQL ”一章http://books.google.fr/books?id=YrzpxNYegEkC&lpg=PT1&dq=bison%20flex%20sql%20grammar&client=firefox-a&hl=en&pg=PA109

答案 3 :(得分:1)

你看过SQLite了吗?它肯定有解析SQL的代码,所以也许你可以避免重新实现它..

答案 4 :(得分:1)

ANTLR可以target C和其他语言一样,catalog of premade grammars有一堆SQL方言 - 特别是MySQL和Oracle。

答案 5 :(得分:0)

不确定是否有任何成熟的C sql解析器可以轻松完成。

这是一个Java版本的SQL库可以完全满足您的需求,它可以轻松地从复杂的SQL查询中用于Retrieve/Refactor table & column name

答案 6 :(得分:0)

µSQL for C++

  

什么是μSQL?

     

μSQL是C ++的SQL解析器引擎,用于开发基于SQL的应用程序   很容易,它支持其他SQL,如领域特定的语言,如   作为UnQL和GQL也是如此。因为μSQL只是用旧的标准C ++编写的   库如STL和ANTLR,那么你可以使用它与许多C ++   编译器和平台。

Repo on Github

答案 7 :(得分:0)

Hyrise数据库系统的独立SQL parser是开源的,即使它是用C ++编写的,也可以从C中进行访问,并且易于理解和修改。它利用野牛和弯曲。

答案 8 :(得分:-3)

您是否考虑过使用lex和yacc编写自己的文件? (黑客 - 硬核方法)

不是微不足道的......但是this site可能会帮助你开始