http://pear.php.net/package/SQL_Parser
http://sourceforge.net/projects/txtsql
http://code.google.com/p/php-sql-parser
Для Perl существует больше разнообразия
Немного не в тему, но, возможно, стоит подумать:
Начиная с MySQL 5.0, поддержка для триггеров это довольно хорошо. Если вы хотите сохранить записи о том, какие изменения были внесены в базу данных, вместо хранения операторов sql, вы также можете определить триггеры вставки / обновления и определить другую таблицу, в которой эти значения могут быть сохранены. Например, вы можете создать простую таблицу с полями
timestamp, user, field, old_value, new_value
и вставлять соответствующие значения всякий раз, когда возникает DML в одной из ваших наблюдаемых таблиц. Чтобы еще больше упростить это, вы можете добавить поле
table
в «таблицу отслеживания», чтобы хранить все изменения во всех отслеживаемых таблицах в одном месте.
Дополнительную информацию об этом см. В руководстве MySQL . тема.
Facebook выпустил версию PHP с открытым исходным кодом их синтаксического анализатора FQL. Из того, что я был этим, был довольно аккуратный код. Вы могли возможно взломать это для работы с регулярным SQL.
можно попробовать: dqml2tree sql (dql и dml) анализатор запроса, записанный в php
Короче говоря я нашел, что пакет PEAR:SQL_Parser предоставил самое чистое краткосрочное решение, пока пакет PEAR:PHP_Parser_Generator (генератор, который использует FSQL) похож на действительно устойчивое долгосрочное решение.
Я нашел, что txtSQL не был достаточно устойчив и не проанализировал SQL достаточно хорошо для гарантирования использования, по крайней мере по-моему.