开源flink都是可以通过tableEvn.sqlUpdate("create table")来创建表的但是今天在blink上试了用TableApi去这样写,就报错,为什么?Unsupported SQL query! sqlUpdate() only accepts SQL statements of type INSERT and DELETE.是什么情况,不支持用代码的方式执行create语句吗,那只能用blink开发平台的sql脚本?
FLink SQL API 支持两种模式,分别是 SQL 查询和 SQL 更新操作。您可以使用 TableEnvironment.sqlUpdate()
方法来执行 SQL 更新操作,如 INSERT 和 DELETE,而不支持 CREATE TABLE 等 DDL 语句。这是因为 SQL UPDATE 操作涉及到了数据的修改和更新,而 DDL 语句只涉及到数据库表结构的操作。
要执行 CREATE TABLE 语句,您可以使用 TableEnvironment.executeSql()
方法。请参考以下示例:
String createTableSql = "CREATE TABLE my_table (id BIGINT, name STRING)";
tableEnv.executeSql(createTableSql);
此方法支持所有的 SQL 语句,包括 SELECT、INSERT、UPDATE 和 DELETE 等。如果您希望用代码的方式来执行 CREATE 语句,请使用这种方法。
Table API 只支持 INSERT 和 DELETE 类型的 SQL 语句,不支持 CREATE 类型的 SQL 语句。这是由于 Table API 的设计理念与 SQL 有所不同,旨在使开发者更容易使用 Flink 编程接口,而不必考虑 SQL 的细节。
因此,如果您需要执行 CREATE 类型的 SQL 语句,建议您使用 SQL CLI 或者 Blink SQL Console 等工具来完成。
根据您提供的信息,错误提示显示“Unsupported SQL query! sqlUpdate() only accepts SQL statements of type INSERT and DELETE。”这意味着在 blink 版本上,TableApi 的 sqlUpdate() 方法只支持 INSERT 和 DELETE 类型的 SQL 语句,而不支持 CREATE 类型的语句。
在 Flink 的 TableAPI 中,sqlUpdate() 方法用于执行更新语句,例如 INSERT、DELETE、UPDATE 等操作。然而,根据 blink 版本的规定,该方法不支持 CREATE 类型的 SQL 语句。因此,您无法使用 TableAPI 的 sqlUpdate() 方法来执行 CREATE TABLE 语句。
要解决这个问题,您可以使用 blink 版本的 SQL API 来执行 CREATE TABLE 语句。根据您的描述,您已经尝试过使用 TableAPI 的 sqlUpdate() 方法来执行 CREATE TABLE 语句,并遇到了错误。因此,您应该尝试使用 SQL API 来执行相同的操作。
在 blink 版本中,您可以使用 blink 的 SQL API 来执行任意的 SQL 语句,包括 CREATE TABLE 语句。具体的实现方式取决于您使用的编程语言和 blink 版本的具体支持情况。您可以参考 blink 版本的文档或示例代码,了解如何使用 SQL API 来执行 CREATE TABLE 语句。
另外,如果您希望使用 TableAPI 来创建表,您可以尝试使用 TableFactory 或者 Catalog API 来实现。这些 API 可以让您以编程方式创建和管理表。具体的实现方式可以参考 Flink 的官方文档或示例代码。
总之,根据您提供的信息,错误提示是由于 blink 版本对 sqlUpdate() 方法的限制导致的。要解决这个问题,您应该尝试使用 blink 的 SQL API 或其他适合的 API 来执行 CREATE TABLE 语句。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。