2015-02-05 5 views
0

저는 CCJSqlParser를 사용하여 SQL을 구문 분석합니다. 나는 치명적인 문제를 줄인다. 아래수정을위한 도움을 청하십시오. CCJSqlParser 예외

String sqlStr = "SELECT t1.Key as Key1, t2.Key as Key2 FROM tabel1 as t1, tabel2 as t2 WHERE t1.Key = t2.Key"; 
Statement statement = CCJSqlParserUtil.parse(sqlStr); 

예외 아래와 같이

내 자바 코드 :

12:11:27,608   INFO ParseSqlUtil:29 - start to parse SQL: SELECT t1.Key as Key1, t2.Key as Key2 FROM tabel1 as t1, tabel2 as t2 WHERE t1.Key = t2.Key 
    net.sf.jsqlparser.JSQLParserException12:11:27,650   INFO SparkTest:347 - excetption:null 

     at net.sf.jsqlparser.parser.CCJSqlParserUtil.parse(CCJSqlParserUtil.java:51) 
     at com.spark.ml.query.ParseSqlUtil.parseSqlToSparkQueryDto(ParseSqlUtil.java:30) 
     at com.spark.ml.query.SparkTest.main(SparkTest.java:342) 
    Caused by: net.sf.jsqlparser.parser.ParseException: Encountered " "." ". "" at line 1, column 10. 
    Was expecting one of: 
     <EOF> 
     "AS" ... 
     "DO" ... 
     "INTO" ... 
     "FROM" ... 

답변

0

JSqlParser V0.9.2을 사용하여 문이 성공적으로 구문 분석됩니다.

SELECT t1.Key AS Key1, t2.Key AS Key2 FROM tabel1 AS t1, tabel2 AS t2 WHERE t1.Key = t2.Key 

나는 문제가 JSqlParser에 대한 키워드입니다 열 이름 , 가정 :

String sqlStr = "SELECT t1.Key as Key1, t2.Key as Key2 FROM tabel1 as t1, tabel2 as t2 WHERE t1.Key = t2.Key"; 
Statement statement = CCJSqlParserUtil.parse(sqlStr); 
System.out.println(statement.toString()); 

정확한 출력을 제공합니다. 최근 버전에서는 데이터베이스 개체 이름에 대해 더 많은 키워드가 허용되었습니다.