- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
以下是我用来解析 MySQL 语句的配置。我能够很好地解析和处理 DML 语句,但我似乎无法解析任何 DDL 语句(CREATE TABLE、ALTER TABLE、DROP TABLE 等)。
public static SqlNode parse(String query) {
SqlParser.Config sqlParserConfig = SqlParser.configBuilder()
.setConformance(SqlConformanceEnum.MYSQL_5)
.setLex(Lex.MYSQL)
.build();
SqlParser parser = SqlParser.create(query, sqlParserConfig);
try {
return parser.parseStmt();
} catch (SqlParseException e) {
lastErrorMessage = e.getMessage();
return null;
}
}
当我尝试解析 CREATE TABLE
语句时,它给出了以下错误消息。
Encountered "ALTER TABLE" at line 1, column 1.
Was expecting one of:
"SET" ...
"RESET" ...
"ALTER" "SYSTEM" ...
"ALTER" "SESSION" ...
"WITH" ...
"+" ...
"-" ...
"NOT" ...
"EXISTS" ...
<UNSIGNED_INTEGER_LITERAL> ...
<DECIMAL_NUMERIC_LITERAL> ...
<APPROX_NUMERIC_LITERAL> ...
<BINARY_STRING_LITERAL> ...
<PREFIXED_STRING_LITERAL> ...
<QUOTED_STRING> ...
<UNICODE_STRING_LITERAL> ...
...
我可以在库中看到像 SqlAlter
、SqlCreate
、SqlDrop
这样的类。是否有不同的方法来解析 DDL?
我使用的是 1.17.0
版本。
最佳答案
我认为您只是缺少合适的解析器工厂。尝试以下操作:
SqlParser.Config sqlParserConfig = SqlParser.configBuilder()
.setParserFactory(SqlDdlParserImpl.FACTORY)
.setConformance(SqlConformanceEnum.MYSQL_5)
.setLex(Lex.MYSQL)
.build();
SqlParser parser = SqlParser.create(query, sqlParserConfig);
关于apache-calcite - Apache Calcite - 似乎无法解析 DDL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53801005/
我想在不使用 jdbc 连接的情况下使用 apache calcite api raw。我可以很好地使用 jdbc api,但是在尝试使用 api 时出现空 ptr 异常。到目前为止我所做的是: pa
如何改变Calcite默认的sql语法,支持“select func(id) as (a, b, c) from xx;”这样的sql语句 最佳答案 要更改 SQL 解析器接受的语法,您需要更改解析器
以下是我用来解析 MySQL 语句的配置。我能够很好地解析和处理 DML 语句,但我似乎无法解析任何 DDL 语句(CREATE TABLE、ALTER TABLE、DROP TABLE 等)。 pu
当我运行“select count(x),y group by y”这样的查询时,方解石会在内存中进行所有计算。因此,如果有足够的数据,它可能会耗尽内存。有没有办法使用其他存储进行聚合?有一个 spa
我目前正在开展一个项目,以扩展 SQL 的功能以支持更多基于 Apache Flink 的流计算功能。 经过大量搜索,我发现 Calcite 是一个很好的工具,可以帮助我解析、验证和优化那些 SQL
Apache Calcite 似乎有一个有趣的功能,可以解析 SQL 并连接到多个数据源,包括使用适配器的非关系数据源。 我看到了足够多的关于方解石本身开发的文档,但没有看到关于将其用作第三方应用程序
我正在实现一个简单的应用程序,它可以更改 SQL 语句中的列名称(并保留表名称)。该语句作为 String 传递,修改后的语句也作为 String 返回,不涉及数据库连接。 为了实现这一点,我使用 A
我需要向 Calcite 添加一个用户定义的函数,它将一个整数作为参数并返回一个整数。 public class SquareFunction { public int ev
Java 代码中是否有一些关于 calcite cassandra 适配器的示例?方解石网站上只有一个 sqlline 示例。非常感谢 最佳答案 下面是一些通过 Avatica/JDBC 使用 SQL
我想创建一个 RexNode 以将日期字段转换为所需的格式。下面是 SQL 等效项 选择转换(varchar(12), "DATE_FIELD", 101) - 06/29/2009 这两天我一直在努
我在尝试通过 Java Web 应用程序 getConnection 时收到以下错误。有人遇到过这个问题吗? com.fasterxml.jackson.databind.JsonMappingExc
我有一个用例,我想知道在 SQL 字符串中选择的列。例如,如果 SQL 是这样的: SELECT name, age*5 as intelligence FROM bla WHERE bla=bla
我正在尝试使用 Calcite 创建一个基本的流程序,使用 CSV 作为数据源。我可以使用 sqlline 运行查询,但无法以编程方式执行此操作。我的代码是: 示例.json { version:
我能够获得 MongoDB 连接并能够获得节点 (LogicalTableScan(table=[[enlivenDev, collection1]])) 但是当我执行节点时,出现空指针异常。 完整代
我正在使用 Apache Calcite 从 Excel 读取数据。Excel 的“工资”表包含以下字段 整数 ID 整数 emp_id 整数工资 我有以下 model.json { "versi
我正在尝试将方解石与 Kafka 集成,我引用了 CsvStreamableTable。 每个 ConsumerRecord 都使用下面的代码转换为 Object[]: static class Ar
我已经阅读了文档,我有点难以理解应该如何为任何东西编写适配器。我想通过类似 SQL 的界面为业务人员简化对 RESTful Web 服务的访问。 粗略的要求看起来像: 注册数据源,在本例中为端点 添加
当我尝试验证包含“CREATE TABLE”的 sql 语句时,它会抛出错误: java.lang.AssertionError: Was not expecting value 'CREATE_TA
需要有关 apache 方解石的建议。我们在 Teradata 上运行了一些 SQL 查询。现在我们想在 Hadoop/Spark 上运行这些 sql 查询(可能使用 Apache 方解石)。 我们在
select t1.city_name from ( select '全国' as city_name from stg.t_vip
我是一名优秀的程序员,十分优秀!