我正在使用梁 2.19。当我尝试解析一些包含 CREATE EXTERNAL TABLE 的 BEAM Sql 时:
String sql = "CREATE EXTERNAL TABLE ext_table (value INTEGER) TYPE text LOCATION "
+ "'ext_table.csv' TBLPROPERTIES '{\"format: \"Excel\"}';\n"
+ "SELECT * ext_table;";
final SqlParser.ConfigBuilder configBuilder =
SqlParser.configBuilder()
.setQuoting(Quoting.BACK_TICK)
.setUnquotedCasing(Casing.UNCHANGED)
.setQuotedCasing(Casing.UNCHANGED);
final SqlParser.Config config = configBuilder.build();
SqlParser parser = SqlParser.create(sql, config);
SqlNode rootNode = parser.parseQuery();
System.out.println(rootNode.toString());
我得到了这个例外。
java.lang.RuntimeException: org.apache.calcite.sql.parser.SqlParseException: Encountered "CREATE" at line 1, column 1.
Was expecting one of:
"ABS" ...
"ALTER" ...
"ARRAY" ...
....etc
所以我想知道用其中的外部表声明解析 SQL 的正确方法是什么。