Flink Table API 读写MySQL

java 复制代码
import org.apache.flink.connector.jdbc.table.JdbcConnectorOptions;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.table.api.DataTypes;
import org.apache.flink.table.api.EnvironmentSettings;
import org.apache.flink.table.api.Schema;
import org.apache.flink.table.api.Table;
import org.apache.flink.table.api.TableDescriptor;
import org.apache.flink.table.api.TableEnvironment;
import org.apache.flink.table.api.TableResult;

import static org.apache.flink.table.api.Expressions.$;

public class TableApiMysql {
    public static void main(String[] args) {
        EnvironmentSettings settings = EnvironmentSettings.newInstance().inBatchMode().build();
        TableEnvironment tableEnv = TableEnvironment.create(settings);

        Schema schema = Schema.newBuilder()
                .column("user_id", DataTypes.BIGINT())
                .column("user_name", DataTypes.STRING())
                .build();

        TableDescriptor tableDescriptor = TableDescriptor.forConnector("jdbc")
                .option(JdbcConnectorOptions.URL, "jdbc:mysql://localhost:3306/tmp")
                .option(JdbcConnectorOptions.USERNAME, "root")
                .option(JdbcConnectorOptions.PASSWORD, "123456")
                .option(JdbcConnectorOptions.TABLE_NAME, "test")
                .schema(schema)
                .build();

        tableEnv.createTable("source", tableDescriptor);

        // 通过API执行select
        System.out.println("select format 1: ");
        tableEnv.from("source").select($("user_id"), $("user_name")).execute().print();

        // 写入mysql user_id是自增主键
        tableEnv.executeSql("insert into source(user_name) select 'hello'");

        // 直接SQL执行select *
        System.out.println("select format 2: ");
        Table table = tableEnv.sqlQuery("select * from source");
        TableResult execute = table.execute();
        execute.print();
    }
}
相关推荐
百***92021 小时前
【MySQL】MySQL库的操作
android·数据库·mysql
心灵宝贝2 小时前
如何在 Mac 上安装 MySQL 8.0.20.dmg(从下载到使用全流程)
数据库·mysql·macos
想睡hhh2 小时前
mysql索引——理解索引机制及操作
mysql
剑动山河2 小时前
ubuntu 升级mysql由mysql5.7.42 升级到8.4.0
mysql·ubuntu·adb
com_4sapi3 小时前
2025 权威认证头部矩阵系统全景对比发布 双榜单交叉验证
大数据·c语言·人工智能·算法·矩阵·机器人
FREE技术3 小时前
学生成绩管理系统 基于java+springboot+vue实现前后端分离项目并附带万字文档(源码+数据库+万字详设文档+软件包+安装教程)
java·vue.js·spring boot·mysql
('-')4 小时前
《从根上理解MySQL》第一章学习笔记
笔记·学习·mysql
EelBarb4 小时前
sqlite数据库迁移至mysql
数据库·mysql·sqlite
鲸能云5 小时前
政策解读 | “十五五”能源规划下储能发展路径与鲸能云数字化解决方案
大数据·能源
五度易链-区域产业数字化管理平台5 小时前
五度易链大数据治理实战:从数据孤岛到智能决策
大数据