2012-08-10 3 views
3

나는 ANTLR & 문법 작성의 새로운 글입니다. 내 요구 사항은 SQL 쿼리를 분석하여 어떤 테이블이 행이 업데이트/삽입/삭제되는지, 열 목록 & 등의 목록을 가져 오는 것과 같은 세부 정보를 얻는 것입니다. 그렇다면 좋은 문서가 ANTLR인데 누구든지 도움을 줄 수 있다면 쿼리 구문 분석을위한 구체적인 문법이 있다면 큰 도움이 될 것입니다. 감사.ANTLR 삽입/업데이트/삭제 SQL 쿼리를 구문 분석하기위한 문법 작성하기

답변

3

다양한 SQL 문법이 위키에 있습니다 http://www.antlr.org/grammar/list

하지만 조심 : 그들은 ANTLR - 사용자가 기여하는가, 기회는 제대로 시험 및/또는 버그가 포함되지했다고한다.

하지만 SQL 구문 분석기를 직접 생성하는 이유는 무엇입니까? 아마도 일부 기존 SQL 구문 분석기를 사용하는 것이 더 쉬울 것입니다. "SQL 파서 Java"(Java로 작업한다는 가정하에)를 검색하면 수십 개의 히트 수를 얻을 수 있습니다.

+0

예 ... 저는 Java로 작업하고 있습니다. 그리고 일반 SQL 구문 분석기 (GSP)와 같은 여러 구문 분석기를 사용하는 것이 좋습니다. 하지만 jdk 14 호환 파서가 필요합니다. 나는 찾을 수 없습니다. jdk14 호환 파서에 대해 알고 있다면 제안 해주십시오. – hemu

+0

JDK 14 (1.4?)와 호환되어야하는 이유는 무엇입니까? 최신 PC에서 SQL 코드를 분석한다면 원하는 모든 무기를 사용할 수 있기를 기대합니다. 이 "요구 사항"은 단지 가치를 추가하지 않고도 문제를 해결하기가 어려워 보이는 것처럼 보입니다. –

+0

@ Ira Baxter - 네 말이 맞습니다. 그러나 우리의 응용 프로그램에는 약간의 유산이 있습니다. 그래서'jdk 1.4' 호환이 가능해야합니다. – hemu

3

"알맞은"SQL 구문 분석기를 구현하는 것은 실제로 상당히 어렵습니다. SQL에서는 모든 종류의 복잡한 명령문 (중첩 된 조인, ...)을 작성할 수 있으며 사람들은 실제로 이것을 수행하므로 "전체"언어를 구현해야합니다. (나는 수십 페이지를 커버하는 SQL 쿼리를 보았다. 바보, 그래,하지만 당신은 당신이 만나는 것을 가지고 일해야만한다.)

SQL2011 (the standard)을 다소 포괄적이라고 생각해보십시오. 그러나,이 문법은 ANTLR이 아니기 때문에 공정한 준비가 필요합니다.

또한 표준 SQL에 대한 데이터베이스/공급 업체 특정 확장에 대해 걱정해야합니다. PL/SQL (SQL 하위 언어 부분 만 포함)에는 많은 Oracle 관련 확장이 포함되어 있습니다. PL/SQL 저장 프로 시저를 마주하고 테이블/열 추적을 수행하려는 경우 PL/SQL의 프로 시저 부분을 수행해야 할 수도 있습니다.