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

flinksql 里面不支持这种with insert into语法吗?

flinksql 里面不支持这种with insert into语法吗?
with view_s_t AS (
...
)
insert into
aa
SELECT
...
FROM
view_s_t;wa

展开
收起
三分钟热度的鱼 2023-10-25 16:40:43 401 0
6 条回答
写回答
取消 提交回答
  • 公众号:网络技术联盟站,InfoQ签约作者,阿里云社区签约作者,华为云 云享专家,BOSS直聘 创作王者,腾讯课堂创作领航员,博客+论坛:https://www.wljslmz.cn,工程师导航:https://www.wljslmz.com

    在阿里云 Flink SQL 中,支持使用 WITH 子句创建临时视图,但不支持直接在 INSERT INTO 语句中使用 WITH 子句。您可以通过以下两种方式来实现类似的功能:

    1. 使用临时视图:
      首先,使用 WITH 子句创建临时视图,并在视图中执行需要的数据加工操作。然后,使用 INSERT INTO 语句从该临时视图中选择数据插入到目标表中。示例如下:

      WITH view_s_t AS (
        SELECT A + 1 AS F, B, C, D, E
        FROM your_source_table
      )
      INSERT INTO aa
      SELECT F, B, C, D, E
      FROM view_s_t;
      

      在上述示例中,我们首先创建了名为 view_s_t 的临时视图,对源数据进行了字段加工操作。然后,通过 INSERT INTO 语句将临时视图中的数据插入到目标表 aa 中。

    2. 使用子查询:
      如果您不想使用临时视图,还可以使用子查询的方式来实现类似的功能。示例如下:

      INSERT INTO aa
      SELECT F, B, C, D, E
      FROM (
        SELECT A + 1 AS F, B, C, D, E
        FROM your_source_table
      ) AS subquery;
      

      在上述示例中,我们将需要加工的字段操作放在子查询中,并通过 INSERT INTO 语句将子查询的结果插入到目标表 aa 中。

    2023-10-26 09:55:29
    赞同 展开评论 打赏
  • Flink SQL 不支持这种 with insert into 语法。在 Flink SQL 中,可以使用以下方法实现类似的功能:

    1. 使用临时表(temporary table):
    CREATE TEMPORARY TABLE temp_table AS
    SELECT ...
    FROM view_s_t;
    
    INSERT INTO aa
    SELECT ...
    FROM temp_table;
    
    DROP TABLE temp_table;
    
    1. 使用子查询(subquery):
    INSERT INTO aa
    SELECT ...
    FROM (
        SELECT ...
        FROM view_s_t
    ) AS subquery;
    
    1. 使用 CTE(Common Table Expression):
    WITH cte AS (
        SELECT ...
        FROM view_s_t
    )
    INSERT INTO aa
    SELECT ...
    FROM cte;
    
    2023-10-26 09:10:11
    赞同 展开评论 打赏
  • 北京阿里云ACE会长

    在 Flink SQL 中,可以使用 WITH 子句来创建一个临时视图,然后使用 INSERT INTO 语句将数据插入到另一个表中。例如,下面这个 SQL 语句将创建一个临时视图 view_s_t,然后将数据插入到表 aa 中:

    WITH view_s_t AS (
    SELECT
    ...
    )
    INSERT INTO aa
    SELECT
    ...
    FROM
    view_s_t;
    CopyCopy

    在这个例子中,WITH 子句定义了一个名为 view_s_t 的临时视图,它由 SELECT 语句所选择的数据组成。然后,INSERT INTO 语句将 view_s_t 中的数据插入到表 aa 中,其中 SELECT 语句选择了要插入的数据。
    请注意,在 Flink SQL 中,INSERT INTO 语句不能直接插入视图,而是要将视图转换为表,然后再插入数据。因此,在上面的例子中,view_s_t 实际上是一个表,而不是一个视图。要将视图转换为表,可以使用 CREATE TABLE 语句,例如:

    CREATE TABLE view_s_t AS SELECT ...;
    CopyCopy

    然后再使用 INSERT INTO 语句将数据插入到表 view_s_t 中,例如:

    INSERT INTO view_s_t ...;

    2023-10-26 08:05:33
    赞同 展开评论 打赏
  • 在 Flink SQL 中,WITH 关键字用于定义一个临时视图,以便于在 INSERT INTO 语句中引用它。但是,Flink SQL 并不直接支持使用 WITH 关键字来创建视图,然后将其用于 INSERT INTO 语句。
    然而,您可以通过使用 CREATE TABLE 语句来创建一个表,然后在该表上执行 INSERT INTO 语句。例如:

    CREATE TABLE view_s_t (id INT, name STRING) WITH (...);
    CREATE TABLE aa (id INT, name STRING);
    
    INSERT INTO aa SELECT * FROM view_s_t;
    

    这样就可以将 view_s_t 视图的内容插入到 aa 表中了。需要注意的是,CREATE TABLE 语句和 INSERT INTO 语句都需要使用 Flink SQL 的方言。

    2023-10-25 21:17:48
    赞同 展开评论 打赏
  • 是个只会写bug的程序媛啊!!!

    是的。flinksql 里面不支持这种with insert into语法。
    flinksql,不支持使用WITH子句来定义临时表或子查询。但是,你可以使用CREATE TABLE语句来创建持久化的表,并使用INSERT INTO语句将数据插入到这些表中。
    比如:

    CREATE TABLE my_table (
      col1 INT,
      col2 STRING,
      ...
    ) WITH (
      'connector' = '...',   
      'format' = '...',        
      ...
    );
    
    INSERT INTO my_table (col1, col2, ...)
    VALUES (1, 'hello', ...);
    
    2023-10-25 17:16:55
    赞同 展开评论 打赏
  • 可以用create view xxx_view as select ... 替代。此回答整理自钉群“【②群】Apache Flink China社区”

    2023-10-25 17:02:11
    赞同 展开评论 打赏
滑动查看更多

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

热门讨论

热门文章

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载