簡體   English   中英

請幫助修復CCJSqlParser異常

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM