[英]please help for fix CCJSqlParser exception
我使用CCJSqlParser解析sql。 我解決致命問題。
我的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);
異常如下:
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" ...
使用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
我認為問題是列名key ,它是JSqlParser的關鍵字 。 在最新版本中,數據庫對象名稱允許使用越來越多的關鍵字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.