开发者社区 > 大数据与机器学习 > 实时计算 Flink > 正文

Flink sql 增加列 为什么报错非法字符?

Flink sql 增加列 为什么报错非法字符?c7fba59c9b3bc58e1b1c75f441cfafe9.png

展开
收起
真的很搞笑 2024-03-20 13:27:49 64 0
2 条回答
写回答
取消 提交回答
  • 244cedbad3d6f280ad5e9f6c4397ab15.png
    版本吧,1.16及以前没有这个功能 ,此回答整理自钉群“【③群】Apache Flink China社区”

    2024-03-20 20:59:33
    赞同 1 展开评论 打赏
  • 在Flink SQL中,您尝试执行的ALTER TABLE语句似乎包含了一个语法错误。错误发生在关键字order的使用上,因为在SQL语句中order是一个保留关键字,用来表示排序操作。当您想将其用作列名时,必须加上反引号(`)进行引用,避免与关键字冲突。同时,ALTER TABLE ADD COLUMN语句中列类型的声明与注释的书写方式也不符合标准SQL语法。

    正确的ALTER TABLE语句应该是这样的:

    ALTER TABLE Orders ADD `"order"` INT COMMENT 'order identifier' FIRST;
    

    这里需要注意的是:

    列名order被双引号包裹,以明确表示这是一个列名而非SQL关键字。
    注释内容使用单引号 ' 包围,而不是双引号。
    然而,根据Flink SQL的具体语法要求,COMMENT关键字后面跟的注释内容可能并不支持放在ADD COLUMN之后直接指定位置(如FIRST)。在某些数据库系统中,可以指定新增列的位置,但在Flink SQL中,可能不支持这样的语法。请参考Flink SQL的官方文档以确认是否支持此类操作,如果没有此功能,则只能单纯添加列而不指定位置,例如:

    ALTER TABLE Orders ADD `"order"` INT COMMENT 'order identifier';
    

    如果Flink SQL确实不支持指定新列位置,那么需要先添加列,然后再手动调整表的DDL来改变列顺序。

    2024-03-20 13:59:10
    赞同 展开评论 打赏

实时计算Flink版是阿里云提供的全托管Serverless Flink云服务,基于 Apache Flink 构建的企业级、高性能实时大数据处理系统。提供全托管版 Flink 集群和引擎,提高作业开发运维效率。

相关产品

  • 实时计算 Flink版
  • 相关电子书

    更多
    SQL Server 2017 立即下载
    GeoMesa on Spark SQL 立即下载
    原生SQL on Hadoop引擎- Apache HAWQ 2.x最新技术解密malili 立即下载