2015-02-05 2 views
0

Я использую CCJSqlParser для анализа sql. Я разочаровываю фатальные проблемы., пожалуйста, помогите исправить исключение CCJSqlParser

мой Java-код, как показано ниже

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); 

Exception, как показано ниже:

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 Ваше заявление успешно разобран.

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()); 

дает правильный вывод:

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

я предполагаю, что проблема это имя столбца ключ, который является ключевым словом для JSqlParser. В последних версиях для имен объектов базы данных было разрешено больше и больше ключевых слов.

Смежные вопросы