Niedawno napisałem narzędzie do statycznego sprawdzania składni SQL dla PostgreSQL. Wykorzystuje ecpg, wbudowany preprocesor SQL C dla postgresa, do sprawdzania składni SQL, więc używa dokładnie tego samego parsera, który jest wbudowany w sam Postgres.
Możesz to sprawdzić na github:http://github.com/markdrago/pgsanity . Możesz przejrzeć README, aby lepiej zrozumieć, jak to działa i uzyskać wskazówki, jak go zainstalować. Oto krótki przykład wykorzystania pgsanity:
$ pgsanity good1.sql good2.sql bad.sql
bad.sql: line 1: ERROR: syntax error at or near "bogus_token"
$ find -name '*.sql' | xargs pgsanity
./sql/bad1.sql: line 59: ERROR: syntax error at or near ";"
./sql/bad2.sql: line 41: ERROR: syntax error at or near "insert"
./sql/bad3.sql: line 57: ERROR: syntax error at or near "update"