tencent cloud

流计算 Oceanus

动态与公告
产品动态
产品简介
产品概述
产品优势
应用场景
购买指南
计费概述
计费模式
退费说明
调整配置费用说明
快速入门
从零开始上手
创建独享集群
创建 SQL 作业
创建 JAR 作业
创建 ETL 作业
创建 Python 作业
操作指南
作业管理
作业开发
作业监控
作业日志
事件与诊断
元数据管理
快照管理
作业调优
依赖管理
集群管理
权限管理
SQL 开发指南
开发指南概述
术语和数据类型
DDL 数据定义语句
DML 数据操作语句
MySQL CDC 多 Source 复用
上下游开发指南
SET 控制语句
运算符和内置函数
标识符与保留字
Python 开发指南
ETL 开发指南
概述
ETL 作业术语表
上下游开发指南
常见问题
联系我们

INSERT 语句

PDF
聚焦模式
字号
最后更新时间: 2023-11-08 15:31:53

INSERT INTO

INSERT INTO 语句必须和 SELECT 子查询联用,SELECT 的数据会写入到指定的数据目的表(Table Sink)中。

语法

INSERT INTO 数据目的表
SELECT 子句

示例

将 SELECT 查询的结果插入名为 KafkaSink1 的数据目的表(Sink)。
INSERT INTO KafkaSink1
SELECT s1.time_, s1.client_ip, s1.uri, s1.protocol_version, s2.status_code, s2.date_
FROM KafkaSource1 AS s1, KafkaSource2 AS s2
WHERE s1.time_ = s2.time_ AND s1.client_ip = s2.client_ip;

Table Sink 注意事项

选择合适的 Connector 程序包

如果在 WITH 参数里指定了某个 Sink,那么请务必勾选相应的【内置 Connector】,或自行上传相应的 Connector 程序包。
如果缺少符合条件的 Connector 程序包,作业启动时会抛出org.apache.flink.table.api.ValidationException: Could not find any factory异常信息。
对于读写 Kafka 的场景,推荐使用不带版本号的 flink-connector-kafka程序包,并将 connector.version参数设置为 universal,以获得最新的功能适配。不建议选择 flink-connector-kafka-0.11 等带版本号的旧版程序包。

排除计算列

对于 INSERT INTO 的数据目的表,计算列是不考虑在内的。例如,某个 Sink 的定义如下,那么在 INSERT INTO MySink 后的 SELECT 语句,必须包含 a (VARCHAR) 和 b (BIGINT) 两个字段,且不允许加入 c 字段,因为 c 是虚拟的计算列。
CREATE TABLE MySink (
a VARCHAR,
b BIGINT,
c AS PROCTIME()
) WITH ( ... ... );

Tuple 和 Upsert 数据流的区别

确保 Sink Table 定义了合适的 WITH 参数。例如有些 Connector 只支持作为数据源,不支持作为数据目的;还有的只支持 Tuple 类型的数据流,不支持 Upsert 数据流等。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈