[java] Java 용 SQL 파서 라이브러리

SQL 문을 구문 분석하기위한 오픈 소스 Java 라이브러리가 있습니까?

가능하면 벤더별 구문 (예 : Oracle 테이블 스페이스 정의 또는 MySQL의 LIMIT 절)을 구문 분석 (또는 적어도 무시) 할 수있을 정도로 사용자 정의 가능하거나 유연해야합니다.

그렇지 않으면 SQL 표준을 엄격하게 준수하는 것입니다.

업데이트 : 나는 두 가지를 위해 이것을 필요로한다 :

  • 비 SQL 데이터베이스에 SQL 인터페이스 제공 (내부 API 호출로 맵핑)
  • 실제 데이터베이스로 가기 전에 SQL을 다시 작성 (예 : Oracle)


답변

ANTLR3 에는 사용 가능한 ANSI SQL 문법이 있습니다. 이를 사용하여 자신의 파서를 만들 수 있습니다.

ANTLR4에는 SQL 문법이 있습니다.


답변

  • JSqlParser
  • Presto의 구문 분석기 는 ANTLR4를 사용하여 작성되며 구문 분석기에서 빌드 된 자체 변경 불가능한 AST 클래스를 갖습니다. AST에는 방문자와 예쁜 프린터가 있습니다.

답변

파서

파서가 필요한 경우 Apache Derby 의 코드베이스에 파서가 있어야합니다 .

공급 업체별 SQL 처리

jdbc Connection 객체 에서 .native () 메소드를보고 공급 업체 중립 쿼리를 전달하여 공급 업체별 쿼리로 후 처리 할 수 ​​있습니다.


답변

Java 용 일반 SQL 구문 분석기 는 공개 소스가 아니지만 사용자가 원하는 것입니다.


답변

Zql 사용해 보기


답변

Hibernate는 SQL과 hql 파싱을 위해 ANTLR을 사용한다.

JSqlParser도 좋은 옵션입니다 .Oracle pl / sql을 구문 분석하는 동안 몇 가지 버그 (또는 일부 기능은 구현되지 않음)가 있지만. 자세한 내용은 포럼을 참조하십시오.

따라서 Oracle pl / sql을 구문 분석하는 경우 ANTLR이 권장됩니다.


답변

구문 분석 된 SQL로 무엇을 하시겠습니까? Lex / Yacc ( BYACC / J , Java Cup 의 몇 가지 Java 구현을 권장 할 수 있습니다.기존 SQL 문법을 사용할 수 )를 권장 할 수 있습니다.

결과 구문 분석 문법으로 실제로 무언가를하고 싶다면 Java로 작성된 오픈 소스 SQL 데이터베이스 인 Derby를 살펴 보는 것이 좋습니다 .