6

是否有任何开源库(任何语言,首选 python/PHP)将 ANSI SQL 字符串标记/解析为其各种组件?

也就是说,如果我有以下字符串

 SELECT a.foo, b.baz, a.bar
 FROM TABLE_A a
 LEFT JOIN TABLE_B b
 ON a.id = b.id
 WHERE baz = 'snafu';

我会取回一个数据结构/对象,例如

 //fake PHPish 
 $results['select-columns']  = Array[a.foo,b.baz,a.bar];
 $results['tables']    = Array[TABLE_A,TABLE_B];
 $results['table-aliases'] = Array[a=>TABLE_A, b=>TABLE_B];
 //etc...

重申一下,我正在寻找一个数据库包中的代码,该代码将 SQL 命令分开,以便引擎知道如何处理它。在互联网上搜索了很多关于如何用 SQL 解析字符串的结果。那不是我想要的。

我意识到我可以通过开源数据库的代码找到我想要的东西,但我希望有一些更现成的东西,(尽管如果你知道在 MySQL、PostgreSQL、SQLite 源代码中的哪个位置,请随意通过它沿着)

谢谢!

4

1 回答 1

2

SQLite 源有一个名为的文件parse.y,其中包含 SQL 语法。您可以将该文件传递给柠檬解析器生成器以生成执行语法的 C 代码。

于 2010-03-13T19:31:09.567 回答