Парсинг/Маркирование Строки, Содержащей Команду SQL

Есть ли какие-либо библиотеки с открытым исходным кодом (какой-либо язык, 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 для взгляда, не стесняются проводить его),

Спасибо!

6
задан Ned Batchelder 13 March 2010 в 19:19
поделиться

1 ответ

Исходный код SQLite имеет файл с именем parse.y , который содержит грамматику для SQL. Вы можете передать этот файл генератору синтаксического анализатора лимона для генерации кода C, который выполняет грамматику.

2
ответ дан 17 December 2019 в 20:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: